带有wp_title()的标题标记的自定义属性

时间:2016-05-29 作者:Bass Jobsen

我可以添加itemproptitle 元素并仍在使用wp_head()add_theme_support( "title-tag" )?

我想创建一个主题get it approved on wordpres.org 它使用微数据。

前面的意思是我希望HTML代码如下所示:

<html itemscope itemtype="http://schema.org/WebPage" lang="en-US">
....
        <title itemprop="name">WordPress Weblog Theme &#8211; Just another WordPress site</title>
....
现在我不使用add_theme_support( "title-tag" ) 并在标题中使用以下代码。php?

<title itemprop="name"><?php echo wp_get_document_title(); ?></title>
<?php wp_head(); ?>
现在,主题检查插件显示:

必需:主题需要调用wp\\u title(),最好是在标题中。php文件。必需:主题需要有标签,最好是在标题中。php文件。建议:在主题中找不到add\\u theme\\u support(“title tag”)的参考。建议主题在WordPress 4.1及以上版本中实现此功能。

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

因为所有_wp_render_title_tag 是否检查title-tag 主题支持和包装<title> 标签,您的现有实现确实没有理由“不通过”,因为正确的实现已经通过以下途径完全相同:

<title itemprop="name"><?php echo wp_get_document_title(); ?></title>
何时_wp_render_title_tag 是否:

echo \'<title>\' . wp_get_document_title() . \'</title>\' . "\\n";
(既然主题检查是一种指导性检查,那么如果它不能说明实际遵循了一个标准,那么从理论上讲,这不应该阻止它通过呢?)

但在任何情况下,您都可以通过添加自定义覆盖过滤器来绕过此问题,同时改进现有实现。。。通过取消挂接现有操作(正如@birgire所建议的)和(我的添加)挂接调用_wp_render_title_tag 并对其应用过滤器:

if (has_action(\'wp_head\',\'_wp_render_title_tag\') == 1) {
    remove_action(\'wp_head\',\'_wp_render_title_tag\',1);
    add_action(\'wp_head\',\'custom_wp_render_title_tag_filtered\',1);
}

function custom_wp_render_title_tag_filtered() {
    if (function_exists(\'_wp_render_title_tag\')) {
        ob_start(); 
        _wp_render_title_tag(); 
        $titletag = ob_get_contents();
        ob_end_clean();
    } else {$titletag = \'\';}
    return apply_filters(\'wp_render_title_tag_filter\',$titletag);
}
因为无论如何,最好有一个可用的过滤器。。。。。。。然后,您可以使用新过滤器轻松添加自己的用例自定义:

add_filter(\'wp_render_title_tag_filter\',\'custom_wp_render_title_tag\');

function custom_wp_render_title_tag($titletag) {
    $titletag = str_replace(\'<title>\',\'<title itemprop="name">\',$titletag);
    return $titletag;
}
当然,如果将核心功能简单地更新为:

function _wp_render_title_tag() {
    if ( ! current_theme_supports( \'title-tag\' ) ) {
        return;
    }
    echo apply_filters( \'wp_render_title_tag\' , \'<title>\' . wp_get_document_title() . \'</title>\' . "\\n" );
}

SO网友:cjbj

不幸的是<title> 标记当前已硬连线到general-template.php (第1062行)。它在一个私有函数中,意味着你不能修改或否决它。因此,目前无法修改标记。您可能需要发布trac 要求他们将来支持这一点。

相关推荐