【问题标题】:How do you assign a specific order for a category in Wordpress?您如何为 Wordpress 中的类别分配特定顺序?
【发布时间】:2013-04-28 14:52:49
【问题描述】:

我遇到了一个小问题,我认为这与语法问题有关。

我有一个特定的 home 脚本,它调用 bloginfo("name") 作为页面标题,然后在下面使用 else 语句,根据与它们关联的第一个类别的名称,标题页面运行良好:

else{
   $category = get_the_category(); 
   echo $category[0]->cat_name;
}

但是,对于大多数帖子,我也有一个默认的“主页”类别(有一些例外),如果它碰巧在相关类别列表中排在首位,我不希望该类别被选为页面标题对于这个页面。

我有两种方法可以让这成为可能,但我不知道如何编写代码。第一种是在上面的代码中排除 home 类别,但不知道如何实现它。第二种方法是强制 wordpress 总是在为特定帖子选择的第一个类别之后添加类别“家”。

我希望这很清楚。有人想出一个基本的解决方案吗?

非常感谢。

【问题讨论】:

    标签: wordpress categories


    【解决方案1】:

    这个插件可以完成大部分你想要的开箱即用:

    http://wordpress.org/extend/plugins/sem-opt-in-front/

    或者,执行以下操作:

    function the_main_topic_link($link = '', $id = '')
    {
        if (!$id || $id != get_option('default_category')) return $link;
    
        if (get_option('show_on_front') == 'page' && get_option('page_on_front')) {
            if ($blog_page_id = get_option('page_for_posts')) {
                return apply_filters('the_permalink', get_permalink($blog_page_id));
            } else {
                return $link;
            }
        } else {
            return home_url('/');
        }
    }
    
    add_filter('category_link', 'the_main_topic_link', 10, 2);
    
    function pre_get_posts_redirect_main_topic($q)
    {
        global $wp_the_query;
    
        if ($q !== $wp_the_query) return;
    
        if ($q->is_category(get_option('default_category'))) {
            wp_redirect(home_url('/'));
            die;
        }
    }
    
    if (!is_admin()) add_action('pre_get_posts', 'pre_get_posts_redirect_main_topic');
    

    它将链接到您的默认类别视为链接到您的首页。

    【讨论】:

    • 嘿,谢谢丹尼斯!我走了(抱歉,懒惰)路线,插件似乎很容易解决了这个问题,这正是我喜欢解决这些问题的方式;)但我会保留你的脚本以供将来参考,尤其是尽管是一个 php/wordpress 新手我发现自己正在破解这些东西。
    • 请注意,如果自 WP 2.3 以来您有很多帖子,该插件(我多年前编写的)会使首页有点慢,所以 YMMV 取决于您在做什么。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2022-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多