我可以在点击链接时设置POST_TYPE QUERY_var吗?

时间:2011-06-08 作者:dkmojo

我有两种自定义的帖子类型,它们使用一些相同的分类法。我希望能够显示分类法中的所有条目(这里没有问题),然后只显示每个帖子类型。但我希望这样做,而不必使用模板创建混乱的自定义页面。

我是否可以设置一个函数,以便在单击链接时更改post\\u type query\\u var?因此,如果我在左侧边栏中有一组导航链接,那么设置为“designer”的post type将把post\\u type query\\u var设置为“designer”。同样的情况也需要发生在“精品”帖子类型的导航链接上。

我想我可能需要使用一些javascript,但我不确定。这可能吗?我不是专家,但我相信这是可能的,

Thanx提前!

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

您可以使用pre_get_posts 过滤器挂钩,用于设置用户传递的帖子类型:

将此代码粘贴到主题的函数中。php文件:

function user_set_type( $query ) {
    //only on your taxonomy page
    if ( $query->is_tax(\'YOUR_CUSTOM_TAXONOMY\') ) {

        //and only if the guesst has selected a type
        if (isset($_GET[\'UTYPE\']) && !empty($_GET[\'UTYPE\'])){
            $query->set( \'post_type\', $_GET[\'UTYPE\'] );
        }
    }
    return $query;
}
add_filter( \'pre_get_posts\', \'user_set_type\' );
更改YOUR_CUSTOM_TAXONOMY 到分类法的名称,然后在分类法页面或小部件上,您需要做的就是创建链接,并将post\\u类型作为其中的参数,例如:

<a href="<?php echo get_permalink() . \'?UTYPE=designer"; ?>">Designers</a> - <a href="<?php echo get_permalink() . \'?UTYPE=boutique" ?>">Boutiques</a>

相关推荐