你是这样做的,
<form name="filterby" action="" method="GET">
<input type="radio" name="cartype" value="bentley" OnChange="document.filterby.submit()" /> Bentley<br />
<input type="radio" name="cartype" value="bmw" OnChange="document.filterby.submit()"/> BMW
<input type="radio" name="cartype" value="bugatti" OnChange="document.filterby.submit()"/> Bugatti
</form>
<?php
$selection = $_GET[\'cartype\']?$_GET[\'cartype\']:\'bentley\';
$args = array_merge( $wp_query->query, array(
\'post_type\' => \'cars\',
\'taxonomy\' => $selection,
\'order\' => desc
)
);
query_posts( $args );
if (have_posts()) : while (have_posts()) : the_post(); ?>
// do your desired output here
<?php endwhile; endif; ?>
这段代码中发生了什么首先,上面的表单包含表示所需汽车或分类的单选输入按钮。
您会注意到以下几点:,
OnChange="document.filterby.submit()"
...这样做的目的是通过使用JavaScript提交表单,而不必使用单独的提交按钮来处理选择。如果您愿意,您可以随时删除该按钮来代替提交按钮。
表单本身使用GET
方法,而不是POST
在处理表单时,我们希望从用户选择中获取值,并将其传递给查询/循环。
选择后$_GET[\'cartype\']
值存储在名为$selection的变量中。然后在查询中使用此变量,在本例中,将其传递给taxonomy
属性作为我们要从中检索帖子的分类法。
你会注意到$selection
变量$_GET[\'cartype\']
似乎被宣布了两次。这不是一个错误,让我们分解变量以了解原因,
$selection = $_GET[\'cartype\'] // store the user selection
? // OR ELSE
$_GET[\'cartype\']:\'bentley\'; // show posts from *bentley* taxonomy by default
这是不言而喻的,因为如果没有用户输入,例如当用户第一次到达该页面时,他们就不会从单选按钮中进行选择
yet, 然后,通过将分类分配给。。。
$_GET[\'cartype\']:\'taxonomy_here\'
...如果没有,则在
$selection
传递给查询的变量。反过来,我们的查询/循环在输入之前不会产生任何结果。这可能会产生不良的用户体验。
虽然这不是必需的,但建议您,除非您运行更复杂的循环/查询,并根据自己的喜好对其进行修改,否则请设置一个默认分类法来显示来自的汽车(如果您想按字母顺序排列,可以使用Aston Martin)。
以上所有内容都会进入模板文件,该模板文件控制您的视图/布局。
希望这对你有帮助。