在WordPress中使用高级自定义字段进行过滤

时间:2017-08-13 04:07:26

标签: wordpress filter advanced-custom-fields

我正在尝试根据WordPress网站中的高级自定义字段设置过滤器。基本上我的名为'ispremium'的高级自定义字段有两个值为'yes'和'no',在下拉过滤器中我设置了两个选项:'Premium Only'和'All Programs'。

当我选择'Premium Only'下拉选项时,我需要这样做,它会列出所有值为'ispremium'='yes'的帖子,当选择所有程序时,它会列出'ispremium = yes'和'ispremium = '没有'。我有以下代码,但它列出了'ispremium = yes'的帖子。我的代码有什么问题?

<select name="order" onchange="this.form.submit();">
    <?php
        $order_options = array(
            'yes' => 'Premium Only',
            'no' => 'All Programs',
        );

        $result = query_posts( array(
        'post_type' => 'post',
        'meta_query' => array(
        array(
        'key' => 'ispremium',
        'value' => 'yes',          
        ),
        ) ) );

        $result = query_posts( array(
        'post_type' => 'post',
        'meta_query' => array(
        array(
        'key' => 'ispremium',
        'value' => 'yes','no'          
        ),
        ) ) );


        foreach( $order_options as $result => $label ) {
            echo "<option ".selected( $_GET['value'], $value )." value='$value'>$label</option>";
        }
    ?>
</select>

1 个答案:

答案 0 :(得分:1)

首先,尝试使用WP_Query代替query_posts()。您还有一些语法错误,例如'value' => 'yes','no'

仅限保费:

$args = array(
    'post_type'     => 'post',
    'meta_query'    => array(
        array(
            'key'       => 'ispremium',
            'value'     => 'yes',
            'compare'   => '='
        )
    )
);

$the_query = new WP_Query( $args );

所有程序

$args = array(
    'post_type'     => 'post',
    'meta_query'    => array(
        'relation'      => 'OR',
        array(
            'key'       => 'ispremium',
            'value'     => 'yes',
            'compare'   => '='
        ),
        array(
            'key'       => 'ispremium',
            'value'     => 'no',
            'compare'   => '='
        )
    )
);

$the_query = new WP_Query( $args );

检查ACF documentation以获取更多信息。另外,我建议您使用Ajax执行此操作,因为如果将此代码放在select元素中,则可用选项将来自上次查询,并且在字段更改时不会动态。

但是我并没有完全得到你想要做的事情;您可能希望在另一个下拉菜单中显示可用的程序,或者您可以简单地重定向到另一个存档页面,该页面会根据所选选项列出程序。