如何在自定义页面中按类别设置筛选器

时间:2015-05-31 作者:Philip

我对WordPress开发的奇妙世界还相当陌生,希望能得到一个问题的帮助。。

我有一个简单的页面模板,可以提取某个类别下的所有帖子,并按定义的顺序显示它们。一切都很好,但我想做的是添加一个过滤器,以便用户可以从列表中选择一个子类别,然后页面将刷新,只显示子类别中的帖子。

食品法典委员会建议:wp_dropdown_category() 功能,但它的操作会将您带到我不想要的类别存档;我需要将用户保持在页面内。

我使用:

$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$args = array (
    \'cat\'            => 1,
    \'posts_per_page\' => 10,
    \'paged\'          => $paged
);
$query = new WP_Query( $args );
对于最初的选择,并考虑更改\'cat\' => 从列表中选择输出,但无法正确获取。

感谢您的帮助!

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

wp_dropdown_categories() 函数输出一个选择框。您可以使用表单操作将表单中的输出包装到同一页面,当用户提交表单时,您可以获取类别id值并查询该类别中的帖子。或者您可以使用jQuery 所以你根本不需要任何形式。

Codex has nice example for both of the case.

如果要将表单发布到当前页面,可以使用该页面url作为表单操作,如下所示

<li id="categories">
<h2><?php _e( \'Categories:\' ); ?></h2>
<form id="category-select" class="category-select" action="<?php echo get_permalink($page_id); ?>" method="get">
<!-- $page_id is the current page id -->
    <?php wp_dropdown_categories( \'show_count=1&hierarchical=1&name=category_select\' ); ?>
    <input type="submit" name="submit" value="view" />
</form>
</li>
您可以像这样使用返回值

$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$cat = ( isset( $_GET[\'category_select\'] ) ) ? $_GET[\'category_select\'] : 1;
$args = array (
    \'cat\'            => $cat,
    \'posts_per_page\' => 10,
    \'paged\'          => $paged
);
$query = new WP_Query( $args );

结束

相关推荐

Parent and child categories

下面是a的一部分WP_Query 环我有两个父类别ABC和12,每个都有几个子类别。在第一个td 我想让ABC儿童频道的slug类和12个儿童频道的slug类。该职位可能属于两个子类别之一,或同时属于两个子类别。一个来自ABC,一个来自12,或者一个来自ABC,一个来自12。$inCat = get_the_category(get_the_ID()); echo \"<td>\".(!empty($inCat[0]->slug) ? $inCat[0]->slu