Split the_title

时间:2012-09-07 作者:ad2003

有没有办法分手the_title 没有自定义字段的两行?

我博客中的标题就像主标题上方的小标题。

问题是,目前我在标题中使用了一个自定义字段,但google和Discus只使用“原始”标题,没有自定义字段。

所以我的问题是,我不能分开吗the_title e、 g.标题第一部分:(标题)标题第二部分:主线。

或者我可以使用一些代码使标题使用的自定义字段变为“原始”标题吗?

2 个回复
SO网友:Joshua Abenazer

最好的方法是使用the_title 滤器将以下代码放入functions.php.

add_filter( \'the_title\', \'wpse_64467_prefix_title\', \'\', 2 );
function wpse_64467_prefix_title( $title, $id ){
    $header_title = get_post_meta( $id, \'header_title\', true );
    $title = ( $header_title ) ? $header_title . \' - \' . $title : $title;
    return $title;
}
只需更换header_title 使用您正在使用的自定义字段名。

UPDATE:我猜谷歌在<title> 在头部标记为标题。上面的代码不会修改这一点。要修改相同内容,需要使用single_post_title 按以下方式过滤。

add_filter( \'single_post_title\', \'wpse_64467_prefix_wp_title\', \'\', 2 );
function wpse_64467_prefix_wp_title( $title, $post ){
    $header_title = get_post_meta( $post->ID, \'_custom_text\', true );

    $title = ( $header_title ) ? $header_title . html_entity_decode( \' &#8211; \', ENT_QUOTES, \'UTF-8\' ) . $title : $title;
    return $title;
}
另外,谷歌的搜索结果需要时间来反映。

SO网友:Manu

您还可以尝试使用另一种方法来实现这一点:在标题字段中输入标题和副标题,并使用您一贯使用的分隔字符将它们分隔开。

然后,您将仅在希望标题拆分为不同行的位置修改主题,您将使用以下内容:

$mystring = get_the_title();
$findme   = \' - \'; // your separator
$pos = strpos($mystring, $findme);
if ($pos === false) {
      $improved_title = \'<h1>\'.$mystring.\'</h1>\';
  } else {
      // isolate part 1 and part 2.
      $title_part_one = strstr($mystring, \' - \', true); // As of PHP 5.3.0
      $title_part_two = strstr($mystring, \' - \');
      $improved_title = \'<hgroup><h1>\'.$title_part_one.\'</h1><h2>\'.$title_part_two.\'</h1></hgroup>\';
  }
echo $improved_title;
这种方法的最大好处是:

在所有希望TitlePartOne和TitlePartTwo位于同一字段的位置(如标题、帖子列表、RSS提要、标题属性…)你是安全的,不需要做任何事情。

结束

相关推荐

获取侧边栏参数(BEFORE_WIDGET、BEFORE_TITLE等)从小部件内

是否可以从小部件中动态获取侧栏参数?也就是说,我正在尝试访问before_widget/after_widget/before_title/after_title/name 包含侧栏的参数。假设我们有一个这样注册的提要栏:register_sidebar( array( \'name\' => \"Homepage Sidebar\", \'id\' => \'homepage-sidebar\', \'before_widget\' =>