php - 设置 wp_title 以更改插件的标题标签?

标签 php wordpress class title

我创建了一个 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/

相关文章:

javascript - 如何通过 php/javascript 保存 javascript 字符串中包含的 xml

php - 无法正确创建数组

python - 如何覆盖类,或取消声明类或在 python 中重新声明类?

javascript - 从 checkbox1 中选择项目并从 dropdown1 中选择项目后,结果在 dropdown2 中显示/隐藏选项值

WordPress:插件开发 - 两个或多个插件中的多个 wp_enqueue_scripts

php - 使用 PHP 和 WordPress 中的复选框更新 MySQL 表

php - 在wordpress中包含父同级文件夹中的PHP文件

java - 许多简单类实例,我的做法是最好的解决方案吗?

c++ - 不同类的相同功能包含在主 C++ 中

javascript - 使用 Angular $post 和 PHP Codeigniter 请求和响应