使用wp_Query在SELECT标记的一个值中收集相同的自定义字段值

时间:2017-10-18 作者:Nick83

我试图在一个select标签中收集特定信息,以便过滤页面。A有几个价格相同的培训页面(例如:80美元、120美元、500美元等)。问题是,当查询自定义字段“price\\u 1”(可变价格)时,wp\\u query会检索所有具有价格的页面,其中大多数页面的价格相同。

因此,我的select标记如下所示:

选择价格:$80$80$80$120美元120美元120美元120美元120美元500美元500美元500美元500美元500美元。。。

我想在其中收集相同的价格值,当单击其中一个时,将显示所有相关的培训页面。

选择价格:$80$120$500。。。

如果您有一些想法,谢谢您的帮助,此时代码变得很棘手。

P、 S:Im使用ACF插件

这是我的代码:

$args = array(
          \'post_type\'=> \'page\',
          \'posts_per_page\' => -1,
          \'meta_key\' => \'prix_1\',

        );

$price_query = new WP_Query( $args ); 


<div class="col-lg-3">
   <select name="page-dropdown"> 

    <?php if( $price_query->have_posts() ) : while( $price_query->have_posts() ) : $price_query->the_post(); ?>


        <option value=""><?php the_field(\'prix_1\'); ?></option>


    <?php endwhile; ?>
    <?php endif; ?>

    </select>
</div>

1 个回复
最合适的回答,由SO网友:Tom 整理而成

使用while循环,可以将所有值添加到一个数组中($options). 然后,在循环遍历值时,可以检查数组中是否出现相同的值(in_array($needle,$haystack)). 如果是,请不要将其添加到选项数组中。

然后,将每个clean值循环到select中。正如我在代码中提到的,您可能希望将循环包装到函数中并缓存它,然后在调用函数时返回值。

这是未经测试的,但应该可以实现:

<?php

$args = array(
    \'post_type\'      => \'page\',
    \'posts_per_page\' => \'-1\',
    \'meta_key\'       => \'prix_1\',
);

$price_query = new WP_Query( $args );
$options     = array();

//Instead of leaving this inside the page, should wrap into a function inside functions.php
if ( $price_query->have_posts() ) {
    while ( $price_query->have_posts() ) {
        $price_query->the_post();
        $field = get_field( \'prix_1\' );
        if ( ! in_array( $field, $options ) ) {
            $options[] = $field; //add to the array
        }
    } //endwhile
}//endif

?>

<div class="col-lg-3">
    <select name="page-dropdown">

        <?php if ( ! empty( $options ) ) { //this should no longer have duplicates
            foreach ( $options as $option ) { ?>
                <option value=""><?php echo $option; ?></option>
            <?php } //end foreach
        } //endif ?>
    </select>
</div>

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'