2013-04-28 51 views
0

我有一个小问题,我认为它与语法问题有关。如何为Wordpress中的某个类别指定特定的订单?

我有回家的特定脚本调用bloginfo("name")的页面标题那么else声明低于根据有关他们的第一个类别的名称标题的网页,并能正常工作:

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

然而,对于大多数帖子我也有一个默认的“主页”类别(有一些例外),我不希望这个类别被选为页面标题,如果它恰好出现在与此页面相关的类别列表中。

有两种方法我可以考虑使这成为可能,但我不知道如何编码它们。首先是排除上面代码中的家庭类别,但不知道如何实现它。第二种方式是以某种方式迫使wordpress总是在特定帖子的第一个选择的类别之后添加“主页”类别。

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

非常感谢。

回答

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

它会好好对待链接到您的默认类别作为连接到您的首页。

+0

嘿非常感谢Denis!我去了(对不起,懒惰)的路线和插件似乎很容易解决这个问题,这正是我想如何解决这些问题;)但我会保留脚本以备将来参考,尤其是尽管是一个php/wordpress新手随着我的行为,我发现自己正在剽窃这些东西。 – HGB 2013-04-28 16:15:16

+0

请注意,插件(我多年前撰写)使得首页有点慢,如果你自WP 2.3以来有很多帖子,那么YMMV取决于你在做什么。 :-) – 2013-04-28 17:02:37

相关问题