web-dev-qa-db-ja.com

ACF - フィールドから最小値と最大値を取得

私は次のようにプロパティのリストを取得するために高度なカスタムフィールドを使用しています -

        <?php
            $args = array(
                'posts_per_page'=> -1,
                'post_type'     => 'properties',
                'meta_key'      => 'development',
                'meta_value'    => $development_id
            );
            $the_query = new WP_Query( $args ); 

        ?>
        <?php if( $the_query->have_posts() ): ?>
            <?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
                <div class="col-md-4">
                <?php the_title(); ?>
                <?php the_field('price'); ?>
                Plot <?php the_field('plot_no'); ?>
                </div>
            <?php endwhile; ?>
        <?php endif; wp_reset_query(); ?>

以下; <?php the_field('price'); ?>‘は以下を返します: -

325000 489950 329000 325000 294995 199950 294995 252950 325000 257950 197950 325000

私が必要としているのは、変数として最低値と最高値を得ることです。

1
nsilva

以下のコードで最後に動作するようになりました。

    <?php
        $args = array(
            'posts_per_page'=> -1,
            'post_type'     => 'properties',
            'meta_key'      => 'development',
            'meta_value'    => $development_id,
        );
        $properties_query = new WP_Query( $args ); 
        $prices = array();

        if( $properties_query->have_posts() ):
            while( $properties_query->have_posts() ) : $properties_query->the_post();
                $price = get_field('price'); 
                if(isset($price) && !empty($price)){
                    $prices[] = $price; 
                }
            endwhile;
            $max_price = max($prices);
            $min_price = min($prices);

        endif; wp_reset_query(); 
    ?>
0
nsilva

単一の値、配列、またはスペースで区切られた一連の値を返すかどうかを知らずに、次のようなものを提案します。

<?php
$args = array(
    'posts_per_page'=> -1,
    'post_type'     => 'properties',
    'meta_key'      => 'development',
    'meta_value'    => $development_id
);
$the_query = new WP_Query( $args ); 

?>
<?php if( $the_query->have_posts() ): ?>
<?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <?php $min_price = $max_price = ''; ?>
    <div class="col-md-4">
    <?php the_title(); ?>
    <?php 
        $price = get_the_field('price'); 
        if( $price ) {
            // if it's an array already:
            $min_price = min($price);
            $max_price = max($price);

            // if it's not an array already:
            $prices = explode(' ', $price);
            $min_price = min($prices);
            $max_price = max($prices);            
        }
        ?>
    <?php the_field('price'); ?>
    Plot <?php the_field('plot_no'); ?>
    </div>
<?php endwhile; ?>
<?php endif; wp_reset_query(); ?> 
0
darrinb