如何将主题自定义变量添加到帖子标题?

时间:2016-09-14 作者:cag8f

我正在尝试向帖子标题添加自定义字段(sample page). 为此,我遵循this previous question, 但变量并没有像预期的那样出现在标题中。事实上,出现了完全相同的标题。任何帮助都将不胜感激。

前面的说明表明应将以下代码添加到函数中。php:

function wpse_224340_document_title($title){
    global $post; // make sure the post object is available to us
    if(is_singular()){ // check we\'re on a single post
      $release_author = get_post_meta(get_the_ID(), "release_author", true);
      if($release_author != "")
        { $title["title"].= " (" . $release_author. ")";}
    }
    return $title;
}
add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });
本例中的变量是propertysq,而不是release\\u author。但一个简单的查找/替换会导致以下结果。。。

What occurs when I implement this code?

当前页面标题为:HS0525 - Chaweng Noi - Horizon Homes Koh Samui 此标题已由Wordpress插件“Yoast SEO”自动插入但在我禁用此自动标题插入并插入上述代码后,插入到页面上的标题与上一页标题相同:HS0525 - Chaweng Noi - Horizon Homes Koh Samui

Possible Sources of Error

可能的错误源#1:前面提到的插件/机制<title> 在页面上。我目前正在研究这是否是原因。我想避免完全删除插件,但我可能不得不这样做。

可能的错误源#2:我是否需要编辑以下行以对应我的主题/功能?

$release_author = get_post_meta(get_the_ID(), "release_author", true);
我试着用下面的一行替换它,但它不起作用。

$propertysq = ale_get_meta(\'propertysq\');
我应该注意:

该站点没有合适的测试环境设置,在这里我可以很容易地看到PHP错误和转储变量<title> 标记在我的标题中。php<编辑:这是我在函数中插入的确切代码。php:

add_filter("document_title_parts", "wpse_224340_document_title");
function wpse_224340_document_title($title){
    global $post; // make sure the post object is available to us
    if(is_singular()){ // check we\'re on a single post
      $propertysq = get_post_meta(get_the_ID(), "propertysq", true);
      if($propertysq != "")
        { $title["title"].= " (" . $propertysq. ")";}
    }
    return $title;
}
add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });

2 个回复
SO网友:hkchakladar

我假设你想使用propertysq 在标题中自定义字段/帖子元,然后使用Yoast SEO。(如果我错了,请纠正我)

所以,这是你的functions.php

function wpse239252_hook_title($title) {
global $post; // make sure the post object is available to us
if(is_singular()){ // check we\'re on a single post
  $propertysq = get_post_meta(get_the_ID(), "propertysq", true);
  if($propertysq != "") { //check if not empty
    $title = $propertysq.\' - \'.$title;
  }
}
return $title;
}

add_filter(\'wpseo_title\', \'wpse239252_hook_title\', 15, 1);
这将添加propertysq 标题字段为1,002Sq Mt - HS0525 - Chaweng Noi - Horizon Homes Koh Samui 在给定的示例中,其中propertysq = 1,002Sq Mt.

P、 S:要获取post\\u meta propertysq,请使用$propertysq = get_post_meta(get_the_ID(), "propertysq", true);

如果对你有用,就告诉我。

SO网友:cjbj

因为有那么多人想操纵它,所以将其包括在内已不再流行<title> 标题中的标记。代替你把wp_head 并允许通过在主题中支持标题来操纵标题:

add_action(\'after_setup_theme\',\'wpse239252_theme_init\');
  function wpse239252_theme_init () {   
    add_theme_support(\'title-tag\');
    }
现在,各种(SEO)插件可能都想使用wp_title 滤器如果您使用此过滤器执行某些操作,并且插件稍后启动,那么您所做的一切都可能丢失。现在,我不知道您安装了哪些插件,但您可以通过赋予过滤器高优先级来确保它是最后一个,如下所示:

add_filter( \'wp_title\', \'wpse239252_title_filter\', 9999, 2 );
  function wpse239252_title_filter ($title,$separator) {
    ... do stuff with $title ...
    return $title;
    }