向WP4.1标题标记中添加schema.org itemprop

时间:2015-01-05 作者:Billy

自WP4起。1、有一个新的\'title-tag\' 添加标题标签的主题功能。我在读一篇文章here 将itemprop添加到<title> 标记,使其如下所示:<title itemprop="name"><?php wp_title(\'\'); ?></title> 但是使用这个新的主题功能,标题标签会自动添加到标题中。

我想知道向中添加itemprop的最佳方法是什么<title> 使用时add_theme_support(\'title-tag\'), 考虑到标题不是手动写入标题。php文件了吗?

谢谢

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

如果您的主题使用add_theme_support(\'title-tag\'), 然后,您可以尝试以下操作:

remove_action( \'wp_head\', \'_wp_render_title_tag\', 1 );
然后只需挂接您自己的修改版本:

add_action( \'wp_head\', \'wpse_render_title_tag_with_itemprop\', 1 );

function wpse_render_title_tag_with_itemprop() {

    if ( did_action( \'wp_head\' ) || doing_action( \'wp_head\' ) ) 
    {     
        printf( 
            \'<title itemprop="name">%s</title>\' . PHP_EOL, 
             wp_title( \'|\', false, \'right\' )
        );
    }
}
标题标记包含itemprop 属性

Note: 这个current_theme_supports( \'title-tag\' ) 正在使用debug_backtrace() 检查是否在_wp_render_title_tag()wp_title() 功能:

if ( \'title-tag\' == $feature ) {
    // Don\'t confirm support unless called internally.
    $trace = debug_backtrace();
    if ( ! in_array( $trace[1][\'function\'], array( \'_wp_render_title_tag\', \'wp_title\' ) ) ) {
        return false;
    }
 }
还请注意,如果我们使用:

add_action( \'after_setup_theme\', function() {
        remove_theme_support( \'title-tag\' );
}, 11 );
相当于:

global $_wp_theme_features;
unset( $_wp_theme_features[\'title-tag\'] );
然后是以下部分wp_title() 将被排除在外:

if ( current_theme_supports( \'title-tag\' ) && ! is_feed() ) {
    $title .= get_bloginfo( \'name\', \'display\' );

    $site_description = get_bloginfo( \'description\', \'display\' );
    if ( $site_description && ( is_home() || is_front_page() ) ) {
        $title .= " $sep $site_description";
    }

    if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
        $title .= " $sep " . sprintf( __( \'Page %s\' ), max( $paged, $page ) );
    }
}
例如,首页上的标题标签可能会变为空。

结束

相关推荐

Get the title before comma

我使用此代码在重力表单字段中返回帖子的标题。add_filter(\'gform_field_value_page_name\', \'page_name_filler\'); function page_name_filler($value){ return get_the_title() ; } 然而,通常帖子的标题太长,而且内容过多。因此,我只想保留标题的第一部分,如果标题上存在逗号“,”之前。通常我的标题上会有多个逗号。如果逗号不