I do not find the solution which must surely be surely simple. (I'm new to WP) I have an ACF field named "partners_order". I would like to sort it in ascending order (ASC)
here's what i tried
<?php $terms = get_terms('type_partenaires');
usort($terms, function($a, $b) {
return get_field('ordre_affichage', $a) - get_field('ordre_affichage', $b);
});
foreach ( $terms as $term ): ?>
<?php echo $term->name; ?>
<?php $loop = new WP_Query( array(
'post_type' => 'partenaires',
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'type_partenaires',
'field' => 'ID',
'terms' => $term->term_id,
'orderby' => 'partners_order',
'order' => 'ASC',
),
),
) ); ?>
if someone could give me a lead to move forward ... thank you
I do not find the solution which must surely be surely simple. (I'm new to WP) I have an ACF field named "partners_order". I would like to sort it in ascending order (ASC)
here's what i tried
<?php $terms = get_terms('type_partenaires');
usort($terms, function($a, $b) {
return get_field('ordre_affichage', $a) - get_field('ordre_affichage', $b);
});
foreach ( $terms as $term ): ?>
<?php echo $term->name; ?>
<?php $loop = new WP_Query( array(
'post_type' => 'partenaires',
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'type_partenaires',
'field' => 'ID',
'terms' => $term->term_id,
'orderby' => 'partners_order',
'order' => 'ASC',
),
),
) ); ?>
if someone could give me a lead to move forward ... thank you
You have placed orderby in a wrong array. Please check modified code.
$loop = new WP_Query( array(
'post_type' => 'partenaires',
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'paged' => $paged,
'meta_key'=> 'partners_order',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'type_partenaires',
'field' => 'ID',
'terms' => $term->term_id
),
),
) );
Thank you for your answer, but when I test nothing displays except the type_partenaires.
I think I was wrong on the explanation of my problem. sorry.
I would like to be able to sort by the "partners_order" field. this field is in my while after my $loops
<?php $terms = get_terms('type_partenaires');
usort($terms, function($a, $b) {
return get_field('ordre_affichage', $a) - get_field('ordre_affichage', $b);
});
foreach ( $terms as $term ): ?>
<div class="cell small-12 medium-12 large-12">
<h2 class="title-type-partenaire"><?php echo $term->name; ?></h2>
</div>
<?php
$loop = new WP_Query( array(
'post_type' => 'partenaires',
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'type_partenaires',
'field' => 'ID',
'terms' => $term->term_id,
),
),
) ); ?>
<div class="cell large-12">
<ul class="flex-partenaire">
<?php if (have_posts()) : while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php get_template_part( 'template-parts/loop', 'page-partenaires' ); ?>
<?php endwhile; ?>
</ul>
</div>
'tax_query' is a condition to filter the posts; if you will get ordered terms for a post in the loop, maybe use 'wp_get_post_terms' is correct; ex:
$loop = new WP_Query( array(
'post_type' => 'partenaires',
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'paged' => $paged));
if ( $loop->have_posts() ):
while ($loop->have_posts()) :
$loop->the_post();
$terms = wp_get_object_terms( get_the_ID(), 'type_partenaires', array(
'orderby' => 'meta_value',
'meta_key' => 'partners_order'
));
array_map(function($term) {
var_dump($term->name);
}, $terms);
endwhile;
endif;
the field 'partners_order' is meta of terms.
if not, use 'meta_key' in the main loop.