web-dev-qa-db-fra.com

ACF - Obtenir la valeur la plus basse et la plus élevée du champ

J'utilise Advanced Custom Fields pour obtenir une liste de propriétés comme suit: -

        <?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(); ?>

Le suivant; <?php the_field('price'); ?>‘ renvoie: -

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

Ce dont j'ai besoin, c'est d'obtenir la valeur la plus basse et la plus élevée en tant que variable, des idées sur la manière de procéder?

1
nsilva

Je l'ai obtenu à la fin avec le code ci-dessous:

    <?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

Sans savoir si renvoie une seule valeur, un tableau ou une chaîne de valeurs séparées par des espaces, je suggérerais quelque chose comme:

<?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