如何使用单选按钮筛选多个分类

时间:2012-06-02 作者:Solomon Henry

enter image description here

右边是分类法,下面是不同的术语,基于术语的无线电选择。。。。。我必须过滤和显示车型。。。。。。。

现场工作可以在这里找到,follow the link

2 个回复
SO网友:Adam

你是这样做的,

<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)。

以上所有内容都会进入模板文件,该模板文件控制您的视图/布局。

希望这对你有帮助。

SO网友:Solomon Henry

我确实喜欢这个。。。。。。。。。。。。。。。。

<?php
function implement_ajaxaa() {
if(isset($_GET[\'manu_catidd\']) && isset($_GET[\'trans_catidd\']) && isset($_GET[\'fuel_catidd\']))
{            
 $bodytype_arg = array(
    \'taxonomy\' => \'bodytype\',
    \'terms\' => array($_GET[\'manu_catidd\']),
    \'field\' => \'slug\',
    \'compare\' => \'==\',
);

if(isset($_GET[\'manu_catidd\'])&& $GET[\'manu_catidd\']==\'undefined\')
{
$bodytype_arg1 = \'\';
}
else 
{
$bodytype_arg1 =$bodytype_arg;
}

$transmission_arg = array(
    \'taxonomy\' => \'transmission\',
    \'terms\' => array($_GET[\'trans_catidd\']),
    \'field\' => \'slug\',
    \'compare\' => \'==\',
);

if(isset($_GET[\'trans_catidd\']) && $GET[\'trans_catidd\']==\'undefined\')
{
$transmission_arg1 = \'\';
}
else 
{
$transmission_arg1 =$transmission_arg;
}

$fueltype_arg=array(
    \'taxonomy\' => \'fueltype\',
    \'terms\' => array($_GET[\'fuel_catidd\']),
    \'field\' => \'slug\',
    \'compare\' => \'==\',
);


$args = array(
\'post_type\' => \'newcars\',\'numberposts\'=>20,     
\'tax_query\' => array(
\'relation\' => \'AND\',

    array(
    \'taxonomy\' => \'model\',
    \'terms\' => \'aston-martin\',
    \'field\' => \'slug\',
    \'compare\' => \'==\',
),
$bodytype_arg1,
$transmission_arg1,
//$fueltype_arg

)
);

$query = new WP_Query( $args );

while ( $query->have_posts() ) : $query->the_post();
echo \'<li>\';
echo \'<a href="\';
echo the_permalink(); 
echo \'" >\';
the_title();
echo \'</a>\';
echo \'</li>\';
 endwhile;
 die();
}
}
add_action(\'wp_ajax_my_special_ajax_callab\', \'implement_ajaxaa\');
add_action(\'wp_ajax_nopriv_my_special_ajax_callab\', \'implement_ajaxaa\');//for users that are not logged in.

?>
但是检索帖子是我遇到的问题。。。。还有什么修改吗?

结束

相关推荐