问题描述

我想在标签名称中使用逗号?例如,"hello, world""portland, or",但 Wordpress 保持分离。我可以从类别页面进行:

image http://img839.imageshack.us/img839/6869/picturepp.png

它显示正常。但是从帖子侧边栏添加的任何内容都不会显示在此处:

image http://img52.imageshack.us/img52/4950/picture1oax.png

这里有一些讨论:http://core.trac.wordpress.org/ticket/14691,但看起来可能无法解决,至少有一段时间。

在此期间,我正在寻找一个比类别页面添加类别更简单的解决方案。

我尝试搜索插件,没有看到任何有用的东西。当显示类别列表或标签时,有几个处理用其他字符替换逗号,但是我没有看到允许用户替换默认分隔符的任何插件。

我不在乎我是否必须自己修补核心。理想情况下,我可以编写一个插件,但是在查看了一些代码之后,我无法弄明白哪里可以处理。

有没有人有解决方案,或提示什么功能和 javascript 开始黑客攻击?我不知道从哪里开始看代码。

最佳解决方案

不需要核心黑客 – 感谢:HOOKS 。

钩子允许用一个很好的组合来解决这个问题

  • 在输出之前用 「,」 替换”–“ 的过滤器

  • 和一个”if” 块,以确保输出也没有为管理界面过滤:)

  • 最后,用格式”Fox–Peter” 而不是 「Fox,Peter」 保存所有的标签,

以下是代码:

// filter for tags with comma
//  replace '--' with ', ' in the output - allow tags with comma this way
//  e.g. save tag as "Fox--Peter" but display thx 2 filters like "Fox, Peter"

if(!is_admin()){ // make sure the filters are only called in the frontend
    function comma_tag_filter($tag_arr){
        $tag_arr_new = $tag_arr;
        if($tag_arr->taxonomy == 'post_tag' && strpos($tag_arr->name, '--')){
            $tag_arr_new->name = str_replace('--',', ',$tag_arr->name);
        }
        return $tag_arr_new;
    }
    add_filter('get_post_tag', 'comma_tag_filter');

    function comma_tags_filter($tags_arr){
        $tags_arr_new = array();
        foreach($tags_arr as $tag_arr){
            $tags_arr_new[] = comma_tag_filter($tag_arr);
        }
        return $tags_arr_new;
    }
    add_filter('get_terms', 'comma_tags_filter');
    add_filter('get_the_terms', 'comma_tags_filter');
}

也许在我的博客文章的一些额外的细节,该主题的帮助以及.. http://blog.foobored.com/all/wordpress-tags-with-commas/

格雷斯,安迪

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。