Ordenar resultados sem WP_QUERY?

Eu sou novo em codificar um WP_QUERY e tentei algumas coisas com ele, mas isso não parece funcionar. Agora (você pode ver a página aqui: http://boomerang.mannydesigns.co/artistes/parcourir/musique/ )

Eu preciso reorganizar o pedido desses artistas por um campo personalizado que eu adicionei (com ACF) nome exclusivo que é um campo de seleção com 3 opções.

É possível fazê-lo sem fazer um WP_QUERY e simplesmente adicionar ao código atual (qual é o loop de publicação usual)?

/** * Alters queries */ add_action( 'pre_get_posts', 'wp_order_artists' ); function wp_order_artists( $query ) { // don't run on the backend if ( is_admin() ) return; // Only run on post types artists if ( is_post_type_archive('artists') && $query->is_main_query() || $post_type == 'artists' ) { $query->set( 'orderby', 'meta_value' ); $query->set( 'meta_key', 'exclusif' ); $query->set( 'order', 'DESC' ); } return; } if ( have_posts() ) : ?> <div class="remix_items grid clearfix ">  <a class="item" href="" title="" rel="bookmark"> 
<?php if ( has_post_thumbnail() ) { the_post_thumbnail('type_cover'); } else { echo ''.the_title().''; } ?>

Solutions Collecting From Web of "Ordenar resultados sem WP_QUERY?"

Se você quiser alterar a ordem de uma consulta já existente, não deve criar um novo object WP_Query mas usar pre_get_posts para alterar a consulta existente, o que impede múltiplas consultas executadas desnecessariamente.

Do pre_get_posts docs :

Este gancho é chamado depois que o object variável de consulta é criado, mas antes que a consulta atual seja executada.


Este é um exemplo de como alterar todas as consultas de um tipo de publicação personalizado para a ordem por um campo personalizado. Obviamente, ele precisará ser alterado para se adequar à sua situação, mas deve dar uma idéia do que fazer:

 /** * Alters queries */ add_action( 'pre_get_posts', 'wpse_217090_pre_get_posts' ); function wpse_217090_pre_get_posts( $query ) { // don't run on the backend if ( is_admin() ) return; // Only run on post types 'your_custom_post_type' if ( is_post_type_archive('your_custom_post_type') && $query->is_main_query() || $post_type == 'your_custom_post_type' ) { $query->set( 'orderby', 'meta_value' ); $query->set( 'meta_key', '_your_custom_field' ); $query->set( 'order', 'ASC' ); } return; } 

Para referência, você deve ler sobre;

  • WP_Query
  • pre_get_posts