如何动态设置页面标题?

时间:2011-11-07 作者:Alex Cook

是否可以使用代码更改页面标题?

例如,假设页面名称为“Book your Order”,但我想将其更改为“Book Order#123”。

我在谷歌上搜索了一下,看了看这里,什么也没看到。有人知道插件或黑客吗?

wp\\u title返回页面标题,但不允许设置页面标题:http://codex.wordpress.org/Function_Reference/wp_title

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

没有关于它的文档,但您始终可以将筛选器应用于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

SO网友:Brendan Nee

从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;
}

SO网友:Nathan Arthur

对于希望更改文档的title 属性,我发现使用wp_title 过滤器不再工作。相反,使用the pre_get_document_title filter:

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

Source

SO网友:leymannx

启用Yoast时,需要覆盖标题,如下所示:

add_filter(\'wpseo_title\', \'custom_titles\', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == \'foobar\') {

    return \'Foobar\';
  }
}

SO网友:nickb

这取决于您是否希望显示当前页面的自定义标题(即<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

SO网友:Feng Jiang

实际上,最简单的方法是使用一行js。

在模板中输入以下代码:

<script>document.title = "<?php echo $new_title; ?>";</script>
此代码不必位于html标题中,它可以放在html正文中。

SO网友:alpha-helix

如果您使用的是All-In-One Seo v4+,请使用此过滤器:

add_filter( \'aioseo_title\', \'aioseo_filter_title\' );

function aioseo_filter_title( $title ) {
   if ( is_singular() ) {
      return $title . \'some additional title content here\';
   }
   return $title;
}

结束