我创建了一个卡片数据库,您可以在此处查看http://hearthable.com/cards。我是通过自定义帖子类型在wordpress中完成的。我有超过400张卡。我还有4个自定义帖子类型/分类。
我的自定义帖子类型被命名为“卡片”,4种自定义分类法是“卡片类型”,“卡片稀有”和“卡片级”,“卡片种族”。
我想添加一个过滤器功能,我的用户可以点击其中一个,第二个或第三个类别旁边的复选框,并根据他们的选择过滤卡片。
我一直在寻找并且在这方面找不到任何东西,所以一点帮助会非常感激。谢谢。
答案 0 :(得分:1)
我做了一个简单的例子,只是为了向您展示过滤器的工作原理。它可以改进,也可以通过其他方式完成。
你必须创建一个表单并设置一个页面(我已经硬编码,你可以做得更好)
<form action="/sample-page/" method="post">
<?php
wp_dropdown_categories( array(
'show_option_all' => 'All',
'show_option_none' => 'None',
'show_count' => 0,
'hide_empty' => 0,
'exclude' => '',
'echo' => 1,
'name' => 'cards-type',
'id' => '',
'class' => 'postform',
'taxonomy' => 'cards-type',
'hide_if_empty' => false,
) );
wp_dropdown_categories( array(
'show_option_all' => 'All',
'show_option_none' => 'None',
'show_count' => 0,
'hide_empty' => 0,
'exclude' => '',
'echo' => 1,
'name' => 'cards-rarity',
'id' => '',
'class' => 'postform',
'taxonomy' => 'cards-rarity',
'hide_if_empty' => false,
) );
?>
<button type="submit">Go</button>
</form>
在您设置的页面中,您必须获取数据并将其转换为WP_Query
$args = array(
'post_type' => 'cards',
);
$item = array();
$list = array();
if ( $_POST ) {
foreach( $_POST as $key => $value ) {
if( !empty($value) ) {
$item['taxonomy'] = htmlspecialchars($key);
$item['terms'] = htmlspecialchars($value);
$item['field'] = 'id';
$list[] = $item;
}
$cleanArray = array_merge(array('relation' => 'AND'), $list);
}
$args['tax_query'] = $cleanArray;
}
$loooop = new WP_Query( $args );
您使用循环来迭代结果
if ( $loooop->have_posts() ) : while ( $loooop->have_posts() ) : $loooop->the_post();
the_title();
endwhile;
wp_reset_postdata();
抱歉英语不好