我创建了一个 WP 插件,它使用查询字符串根据访问者的选择提取页面数据。显然,这会“模拟”其他页面,但页面标题不会从 WP Admin 中设置的标题更改。
我一直在尝试连接到 wp_title
以动态更改标题标签,但无法正常工作。
以下函数有效:
public function custom_title($title) {
return 'new title';
}
add_filter( 'wp_title', array($this, 'custom_title'), 20 );
// changes <title> to 'new title'
一旦我尝试将变量传递给它,它就会失败。
public function custom_title($title, $new_title) {
return $new_title;
}
WordPress 提示它缺少第二个参数,我想这是有道理的,因为该函数是在页面加载时调用的...我希望我可以做类似 $this->custom_title($title, 'new title);
在我的插件中,但它看起来不太可能?
我把它贴在这里是因为我认为这是一个普遍的 PHP 类问题。
我可以全局化一个返回的变量吗?我想从另一个函数的查询中返回“标题”列,例如 $query->title
函数运行时从数据库返回数据
public function view_content()
{
$query = $this->db->get_row('SELECT title FROM ...');
$query->title;
}
我现在需要将 $query->title 设置为页面标题。
public function custom_title()
{
if($query->title)
{
$new_title = $query->title;
}
}
最佳答案
看来您可能误解了过滤器机制的工作原理。 filter
是 WordPress 在特定时间使用特定参数调用并检索结果的函数。这是对 WordPress 过滤器的一个不错的介绍:http://dev.themeblvd.com/tutorial/filters/
您可能还想特别查看 wp_title
过滤器的文档页面,这样您就可以了解您的函数应该期望哪些参数:https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title
执行您想要的操作的代码如下所示:
public function __construct() {
//...
add_filter( 'wp_title', array($this, 'custom_title'), 20);
}
public function view_content() {
$query = $this->db->get_row('SELECT title FROM ...');
$this->page_title = $query->title;
}
public function custom_title($title) {
if ($this->page_title) {
return $this->page_title;
}
return $title;
}
关于php - 设置 wp_title 以更改插件的标题标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31441802/