有多个参数

时间:2016-06-26 19:09:25

标签: php wordpress forms isset

我试图在我的网站上创建一个类别过滤器,允许用户在两​​个类别列表中选择一个类别。一个列表被称为" Zones"另一个被称为"商业类型"。单击表单上的“提交”按钮时,页面应刷新,仅显示用户选择的类别中的帖子。这是完整的代码:

$zones = get_field('zones_list');
$business_types = get_field('business_type');

echo'<form role="search" method="post" id="searchform">
    <div>';
    foreach( $zones as $zone ):
        echo'<input type="radio" value="'.$zone->slug.'" name="zone_list[]">'.$zone->name.'</input>';
    endforeach;
    echo'</div>
    <div>';
    foreach( $business_types as $business_type ):
        echo'<input type="radio" value="'.$business_type->slug.'" name="business_type[]">'.$business_type->name.'</input>';
    endforeach;
    echo'</div>
    <input type="submit" id="searchsubmit" value="Submit" />
</form>';

if(isset($_POST['zone_list'])) {
    $list_name = $_POST['zone_list'];
    $list_formated = implode('+', $list_name);
} else if (isset($_POST['business_type'])) {
    $list_name = $_POST['business_type'];
    $list_formated = implode('+', $list_name);
} else if (isset($_POST['zone_list'], $_POST['business_type'])) {
    $list_name_1 = $_POST['zone_list'];
    $list_name_2 = $_POST['business_type'];
    $list_both = array_merge($list_name_1,$list_name_2);
    $list_formated = implode('+', $list_both);
} else {}

$args = array(
        'post_type' => 'post',
        'orderby' => 'date',
        'category_name' => $list_formated,
        'order' => 'DESC',
        'posts_per_page'=> '3',
        'paged' => get_query_var( 'paged' ),
    );
        global $wp_query;
        $wp_query = new WP_Query( $args );
        if( $wp_query->have_posts() ):
        while( $wp_query->have_posts() ): $wp_query->the_post(); global $post;

现在,只有在一个类别列表中选择一个类别时,表单过滤器才有效。如果您选择两个类别(每个列表中一个),这是我需要它做的,它返回NULL。我相信错误位于此处:

else if (isset($_POST['zone_list'], $_POST['business_type'])) {
    $list_name_1 = $_POST['zone_list'];
    $list_name_2 = $_POST['business_type'];
    $list_both = array_merge($list_name_1,$list_name_2);
    $list_formated = implode('+', $list_both);
} else {}

我只是学习PHP,所以可能有更好的方法,但这是我迄今为止找到的唯一解决方案。我非常感谢能得到的任何帮助。

1 个答案:

答案 0 :(得分:-1)

你可以这样写吗

if(isset($ _ POST [&#39; zone_list&#39;])&amp;&amp; isset($ _ POST [&#39; business_type&#39;])){

&安培;&安培;意味着两个issets必须为true。你可以写&amp;&amp;或者,它是一样的。