0

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

我有一个特定的 home 脚本,它调用bloginfo("name")页面标题,然后在else下面的语句中调用基于与它们关联的第一个类别的名称的标题页面,它工作正常:

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

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

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

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

非常感谢。

4

1 回答 1

0

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

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');

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

于 2013-04-28T15:00:42.883 回答