Wordpress-在运行php的短代码中动态更改页面

Wordpress-在运行php的短代码中动态更改页面,wordpress,Wordpress,我正在使用一个自定义的短代码插件。这个插件允许我运行一些php。php查询一个非wp数据库来构建一个车辆规格页面,一切都很好。问题是页面标题和描述所需的所有信息都包含在来自数据库的数据中。我尝试了一些标准的wp-php过滤器,但标题没有改变 这是否可能是因为短代码的执行时间 TinyMCE in WP admin. Shortcode ----------------------------------------------- [myplugin data_id='42'] PHP wind

我正在使用一个自定义的短代码插件。这个插件允许我运行一些php。php查询一个非wp数据库来构建一个车辆规格页面,一切都很好。问题是页面标题和描述所需的所有信息都包含在来自数据库的数据中。我尝试了一些标准的wp-php过滤器,但标题没有改变

这是否可能是因为短代码的执行时间

TinyMCE in WP admin. Shortcode
-----------------------------------------------
[myplugin data_id='42']

PHP window in shortcode editor
-----------------------------------------------
$GP=array_merge($_GET, $_POST);

echo "hello word" //works
echo $data_id;  //works
echo $GP[some_post_data]; //works
//connect to database (irrelevant)
echo "the title from data table for data_id 42 = ".$data[title];  //works

// the following has no effect on page title even though $data[title] contains valid data
add_filter('the_title','myCallback'); 
function myCallback($data){ 
  return $data[title]; 
  } 

问题在于$data[title]超出范围,并且您的过滤器回调设置不正确。此外,还应使用引号封装关联索引

向现有筛选器添加回调时,回调中的参数由筛选器定义传递。案例和要点:

_title的标准筛选器中的参数为$title和$id。如果要从$data数组返回标题,可以使用全局作用域以草率的方式执行此操作:

add_filter('the_title','myCallback'); 
function myCallback($title, $id){
    global $data;
    return $data['title']; 
}

但就个人而言,我会考虑完全避免使用全局过滤器,并集中精力使用自定义过滤器。调查在获得操作钩子的句柄后,它们非常容易掌握。

在测试代码后,页面标题仍然没有改变。看起来好像header.php在我的插件执行之前就已经执行了,所以什么都不起作用。我想我将不得不在header.php中连接到我的外部数据库,这样我就可以尽早与wordpress函数进行交互。