Yoast SEO插件在哪里设置站点/页面标题?

时间:2017-02-28 作者:KingsInnerSoul

我正在跑步WP 4.7.2Yoast SEO 4.4.我想在所有标题中附加一个PHP变量。但我似乎无法做到这一点。

我已经读过了wp_title 以前是WP 4.4之前的方法,然后被删除,然后因为一些“bug”而返回?

我试过使用wpseo+add_filter 方法,但它不设置网站标题。

我已经搜索过了/wp-content/plugins/wordpress-seo 通过grep -r \'<title>\' * 我没有看到插件在哪里设置标题标签。它确实返回了几行,但似乎没有一行是相关的。

我在中找到以下代码clss-frontend.php:

// When using WP 4.4, just use the new hook.
add_filter( \'pre_get_document_title\', array( $this, \'title\' ), 15 );
add_filter( \'wp_title\', array( $this, \'title\' ), 15, 3 );

2 个回复
最合适的回答,由SO网友:WebElaine 整理而成

有一个wpseo_title 可以挂接的过滤器。示例:

add_filter(\'wpseo_title\', \'add_to_page_titles\');
function add_to_page_titles($title) {
    $title .= $addToTitle;
    return $title;
}

SO网友:Nathan Johnson

Yoast SEO插件在哪里设置站点/页面标题

Yoast SEO插件添加了两个过滤标题的挂钩。

add_filter( \'pre_get_document_title\', array( $this, \'title\' ), 15 );
add_filter( \'wp_title\', array( $this, \'title\' ), 15, 3 );
Thepre_get_document_title 钩子是在WordPress 4.4中添加的,所以在旧版本中,钩子永远不会被触发。

对于4.4之前的版本wp_title 钩子将生成SEO标题
对于4.4以上的版本pre_get_document_title 钩子将生成SEO标题。

这个wp_title 钩子仍然会在比4.4更新的版本上启动,但它不会做任何事情,因为如果我们看看WPSEO_Frontend::title() 方法,请注意,如果已经设置了$title属性,它将简单地返回该属性。如果未设置,它将使用WPSEO_Frontend::generate_title() 方法

如何更改SEO标题

要修改SEO标题,您需要在Yoast生成标题之后,但在其输出之前进行挂钩。Yoast SEO最新发布的标题是wp_title 挂接优先级为15。在所有wp_title 已处理挂钩。所以我们需要wp_title 之后15。

如果要更改其他插件中的标题,只需将以下代码添加到插件中即可:
如果要更改主题中的标题,请将以下内容添加到函数中。php文件:

//* Hooking after priority 15 guarantees that Yoast SEO has generated the title
add_filter( \'wp_title\', \'wpse_258323_title\', 20, 2 );
function wpse_258323_title( $title, $post_id ) {
  //* Do something with the $title
  return $title;
}

相关推荐

在帖子和页面标题中应用_title()过滤器,但不在菜单标题中应用

我使用以下代码更改WordPress的标题posts 和pages. 但它也改变了导航菜单项的标题,这是我想要避免的。我想更改中帖子和页面的标题:home page, 全部的archive pages 以及所有widgets (最近发布小部件、随机发布小部件等)堆栈溢出和WP堆栈交换中都存在类似的问题,建议使用in_the_loop() 作用不幸的是,它对我不起作用,因为如果我放置它,它也会影响侧边栏小部件。也就是说,如果我使用in_the_loop() 作用the_title 过滤器不影响recent