Add_Theme_Support(‘title-tag’)与自定义标题函数冲突

时间:2015-02-03 作者:Unix

\'Title-tag\' 是4.1版中引入的主题功能,我想将其用作主题的默认标题。此功能应添加到after_setup_themeinit 行动建议使用here. 这个功能的使用非常适合我。但是:

此外,我有一个自定义标题功能,可以使用选项树框架启用/禁用该功能。此框架直接加载到functions.php. 然后,我在after_setup_theme 优先级为2:

add_action( \'after_setup_theme\', \'theme_functions\', 2);
这是为我的自定义标题添加的过滤器:

add_filter( \'wp_title\', \'custom_titles\', 10, 2 );
当我禁用custom_titles() 功能,新功能title-tag 工作非常完美,但当我启用自定义项时,它会返回两次标题。确切地说:

<title>Front page meta title example</title>

Front page meta title example<title></title>
第一个是正确的,它使用wp_title() 函数插入到header.phptitle 标记,但第二个标记包含在wp_head() 作用

事实上,我的custom_titles() 无需使用新功能,功能即可完美运行title-tag. 因此,当我尝试同时使用两者时,似乎会出现冲突。

你认为把这两个功能都放进去是一个好的解决方案吗after_theme_setup 简单条件语句中的优先级1,还是有更好的方法?看来解决办法应该更容易些。

<小时>UPDATE: 这太疯狂了。如果我删除title 标题的标记要使用新功能,主题检查将返回:

必需:主题需要有标签,最好是在标题中。php文件。

如果删除新功能以使用自定义函数,主题检查将返回:

建议:在主题中找不到add\\u theme\\u support(“title tag”)的参考。建议主题在WordPress 4.1及以上版本中实现此功能。

老实说:LOL.添加add_theme_support 在里面functions.php, 和title 中的标记header.php 正如他们«推荐»&;«REQUIRE»分别返回两次标题!

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

你的问题是你不能使用wp_title() 如果主题已经支持title-tag. 这个<head> 你的主题应该是这样的:

<head>
    <meta charset="<?php bloginfo( \'charset\' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <?php wp_head(); ?>
</head>
过滤器和标题标签支持:

add_action( \'after_setup_theme\', \'theme_functions\' );
function theme_functions() {

    add_theme_support( \'title-tag\' );

}

add_filter( \'wp_title\', \'custom_titles\', 10, 2 );
function custom_titles( $title, $sep ) {

    //Check if custom titles are enabled from your option framework
    if ( ot_get_option( \'enable_custom_titles\' ) === \'on\' ) {
        //Some silly example
        $title = "Some other title" . $title;;
    }

    return $title;
}
如果你这样做,它会工作得很好。

SO网友:Unix

我已经找到了一个解决方案,所以我相信它对其他人会有用。

第一个:自定义标题Explanation: 如果我的custom_titles() 功能已启用,请在中加载该功能functions.phpafter_theme_setup 优先级2,并显示title 中的标记header.php 文件

在函数中。php:

if ( ot_get_option( \'enable_custom_titles\' ) === \'on\' ) {
    // The custom titles function
}
在标题中。php:

<?php if ( ot_get_option( \'enable_custom_titles\' ) === \'on\' ) : ?>
<title><?php wp_title( \'|\', true, \'right\' ); ?></title>
<?php endif; ?>

<!-- The next will return the new WP titles feature if custom titles are off -->
<?php wp_head(); ?>
然后:标题标签支持Explanation: 如果我的custom_titles() 已禁用,add_theme_support(\'title-tag\'); 在里面functions.phpafter_theme_setup 优先级1。

所以,在函数中。php:

if ( ot_get_option( \'enable_custom_titles\' ) === \'off\' ) {
    add_theme_support( \'title-tag\' );
}
关于after_theme_setup 优先级,在我的例子中,只需要在使用之前加载选项树框架ot_get_option() 功能,因此,如果有人使用不同的选项框架,则可能会有所不同(不需要)。

现在,我的主题在4.1版中有了新的标题功能,并使用元框定制了SEO标题:两者都可用。(我知道这是插件领域,但很高兴在主题中集成了一些基本特性——«基本»)。由于这一点,客户端将对标题的显示方式有更多的控制。

结束

相关推荐

Update custom post type title

当用户在管理后端更新自定义帖子类型的标题时,我想更新自定义帖子类型的帖子元。类似下面的伪代码;if ((get_the_title() !== $val_in_title_field) && (Publish == true)) { update_post_meta( $id, \'custom_field\', \'\' ); } 我不清楚如何检查用户单击发布时从标题字段传递的内容,以及如何检查uer是否单击了发布。