例如,假设页面的名称为“ Book Order”,但我想将其更改为“ Book Order#123”。
我用Google咬了一口,看着这里,什么也没看见。任何人都知道插件或黑客吗?
wp_title返回页面标题,但不允许设置页面标题:
http://codex.wordpress.org/Function_Reference/wp_title
#1 楼
没有相关文档,但您始终可以对the_title
应用过滤器,如下所示:add_filter('the_title','some_callback');
function some_callback($data){
global $post;
// where $data would be string(#) "current title"
// Example:
// (you would want to change $post->ID to however you are getting the book order #,
// but you can see how it works this way with global $post;)
return 'Book Order #' . $post->ID;
}
请参阅以下内容:
http:// codex.wordpress.org/Function_Reference/the_title
http://codex.wordpress.org/Function_Reference/add_filter
评论
这似乎覆盖了所有标题。如何仅覆盖当前标题?
– Petrus Theron
17 Mar 29 '17 at 16:47
您需要向回调添加条件,例如if($ post-> ID == 45){...}
–尼克·巴雷特(Nick Barrett)
18年7月9日在3:55
the_title过滤器在最新版本的Wordpress中不再起作用,请使用document_title_parts或pre_get_document_title过滤器,如其他答案中所述。
–布伦丹·尼(Brendan Nee)
18-11-15在2:48
#2 楼
从Wordpress 4.4开始,可以使用Wordpress过滤器document_title_parts
更改标题。在
functions.php
中添加以下内容:add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
// $title is an array of title parts, including one called `title`
$title['title'] = 'My new title';
if (is_singular('post')) {
$title['title'] = 'Fresh Post: ' . $title['title'];
}
return $title;
}
评论
但是您将参数传递到哪里?
– Tintinabulator Zea
18/12/22在5:38
上面的函数修改了the_title()和get_the_title()函数的工作方式-因此无需传递任何参数。
–布伦丹·尼(Brendan Nee)
18/12/25在19:51
#3 楼
对于那些希望更改文档的title
属性的人,我发现使用wp_title
过滤器不再有效。而是使用pre_get_document_title
过滤器:add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
return "My Modified Title";
}
源
评论
感谢您几年后再来发布此更新。多年来,我一直在我的插件中使用过wp_title,但直到现在我才意识到它不再起作用,您的回答为我节省了很多精力。所以谢谢!
–马修·李
19年1月11日在16:35
@MatthewLee很高兴听到它对您有帮助:)
–内森·亚瑟(Nathan Arthur)
19年1月11日在18:52
#4 楼
启用Yoast后,您需要像这样覆盖标题:add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {
global $wp;
$current_slug = $wp->request;
if ($current_slug == 'foobar') {
return 'Foobar';
}
}
#5 楼
确实取决于您要显示当前页面的自定义标题(即标题中<title></title>
标记的内容)还是过滤页面正文或列表中页面的标题。在前一种情况下(当前页面的标题),请尝试为
wp_title()
添加过滤器,如下所示:http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title
如果您要全面修改页面标题,则过滤
the_title()
可以解决问题:http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title
评论
实际上,根据我的经验,您需要同时过滤wp_title和the_title才能覆盖两者。
–杰弗里
15年3月26日在8:59
我不确定它是否因为弃用而已,但tis对我不起作用。我尝试了组合和内联过滤器以及新的apply_filters('pre_get_document_title',字符串$ title)
–降落
17年1月18日在18:00
可悲的是,这两个都不对我有用。
–黛比·库斯(Debbie Kurth)
19年6月8日在5:46
这个答案已经接近6年了;作为发布者(以及不再与WP一起积极工作的人),我建议改为查看最新文档。
–nickb
19年6月9日19:33
#6 楼
实际上,最简单的方法是使用一行js。将以下代码放在模板中:
<script>document.title = "<?php echo $new_title; ?>";</script>
该代码不必位于html标头中,它可以放在html正文中。
评论
不过,这对SEO不利。
– Alex Cook
20-11-21在0:57
@AlexCook您绝对正确。我正在针对SEO无关紧要的问题进行快速修复。现在我完全忘记了它的用途。大声笑。
–冯江
20-11-21在15:29
评论
价值从何而来?该页面中#123的值是什么?