如何拆分_TITLE并插入范围标记

时间:2012-03-14 作者:egr103

我的标题,站点范围,将在h1标签中遵循此主题:

主标题/副标题文本

我试图在所有文本后面(包括“/”)加上一个span标记,因此我的标记如下所示:

<h1>Main title heading <span>/ Sub-title text</span></h1>
我如何做到这一点?我对PHP不太在行,但我尝试过使用explode,但无法得到最终结果。我最终所做的就是在“/”之后隐藏所有内容

EDIT:删除代码(&M);Pastebin已创建,这是我的整个索引页面。php:http://pastebin.com/0T9mt7Fu

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

如果你只使用custom field 键入以创建子标题
这样,您就可以不接触标题,只需添加一个字段,您可以在其中插入这样的值(调用字段子标题):

enter image description here

然后,您可以轻松获取字幕:

<?php
$sub_title=get_post_meta($post->ID,\'subtitle\',true);
if($sub_title != \'\') {
echo \'<h1>\'. the_title() .\'<span>\'. $sub_title .\'</span></h1>\';
} else {
echo \'<h1>\'. the_title() .\'</h1>\';
}
?>
<我希望这是一个适合您的解决方案。。。我偶尔用它

干杯,萨吉夫

<小时>HOW TO:

用上面的代码替换(我希望它在您的主题中看起来一样):

<h1><?php the_title(); ?></h1>

SO网友:glueckpress

这来得有点晚,但我不知道还有什么地方有意义。我有一个类似的问题,并创建了一个解决方案。

toscho has pointed out, \\u标题也用于导航菜单中。他创造了一个filter to switch the title filter on/off for nav menus—我个人认为这就是爱因斯坦。(非常感谢!)

所以我只是稍微修改了一下他的过滤器,让它在这里工作。然后添加了实际的过滤功能。在帖子标题字段中使用空格pipe space(“|”)的任何位置,其后面的部分都会被包装在<span> 标签(包括原文章作者要求的斜杠)。

/**
 * Append a sub-heading to WordPress post titles
 */

add_filter( \'wp_nav_menu_args\', \'gp121028_title_filter_switch\' );
add_filter( \'wp_nav_menu\', \'gp121028_title_filter_switch\' );
/**
 * Switch title filter off when menu class starts and on when it ends.
 *
 * @param  mixed $input Array or string, we just pass it through.
 * @return mixed
 */
function gp121028_title_filter_switch( $input ) {
    $func = \'wp_nav_menu_args\' == current_filter() ? \'remove_filter\' : \'add_filter\';
    $func( \'the_title\', \'gp121028_filter_title\' );
    return $input;
}

/**
 * The actual filter function for the_title()
 */
function gp121028_filter_title( $title ) {
    $substrings = explode( \' | \', $title );
    $title = ( ! empty( $substrings[0] ) ) ? $substrings[0] . \'<span>/\' . $substrings[1] . \'</span>\' : $title;
    return $title;
}
希望它能帮助别人!

SO网友:goldenapples

我认为从语义角度来看,Sagive SEO给出的答案似乎是最好的方法。但是,如果您希望在标题字段中同时保留两个“标题”,那么简单的分解应该适合您。

尝试以下操作:

add_filter( \'the_title\', \'wpse45589_split_title\', 10, 2 );

function wpse45589_split_title( $title, $post_id = null ) {
    if ( !$post_id ) 
        return $title;
    $post = get_post( $post_id );
    if ( $post->post_type !== \'page\' )
        return $title;
    $parts = explode( \'/\', $title, 2 );
    $title_to_return = $parts[0];
    if ( !empty( $parts[1] ) )
        $title_to_return .= \'<span>/\'.$parts[1].\'</span>\';
    return $title_to_return;
}
ETA:根据下面@toscho的建议,我在过滤标题之前添加了几行来检查帖子类型。此函数现在只应添加<span>\'s到页面上的标题,而不是导航菜单中的标题等

结束

相关推荐