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

时间:2012-09-13 01:27:59

标签: wordpress

我正在使用自定义短代码插件。该插件允许我运行一些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]; 
  } 

1 个答案:

答案 0 :(得分:0)

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

将回调添加到现有过滤器时,回调中的参数将由过滤器定义传递。案例和观点:Filtering The Title

the_title的标准过滤器中的参数是$ title和$ id。如果要从$ data数组返回标题,可以使用全局范围以草率方式执行:

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

但就个人而言,我会考虑完全避免使用全局,并专注于使用自定义过滤器。看看Adding Your Own Hooks。在掌握动作挂钩之后,Filter Hooks很容易掌握。