wordpress custom loop ascendente descendente por campo personalizado

Estou desenvolvendo o site WordPress que depende do preço, então eu adiciono personalizado arquivado chamado ‘preço’

ID, 'price', TRUE); endwhile; ?> 

é um loop básico para mostrar o preço de todas as postagens. requisito: alguém pode modificar acima para que o seu show seja publicado de acordo com a ordem ascendente ou decrescente, como todo o site de preços

Solutions Collecting From Web of "wordpress custom loop ascendente descendente por campo personalizado"

Se você criasse seu próprio WP_Query, você poderia ter feito isso desta maneira:

 < ?php $args = array( 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_key' => 'price' ); $new_query = new WP_Query( $args ); ?> 

Veja os exemplos nos documentos:

https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

Como você está usando o Mainloop, você precisa agir um pouco diferente:

 < ?php add_action( 'pre_get_posts', 'order_by_price' ); function order_by_price( $query ){ if( ! $query->is_main_query() ) //If its not the main query return return; $query->set( 'order', 'asc' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'meta_key', 'price' ); } ?> 

Isso irá atuar em cada Mainloop. Por isso tem cuidado. Talvez você queira isso para ser aplicado apenas para tipos de postagem específicos. Neste caso, você deve verificar isso primeiro:

 < ?php add_action( 'pre_get_posts', 'order_by_price' ); function order_by_price( $query ){ if( ! $query->is_main_query() ) //If its not the main query return return; if( 'product' != $query->get( 'post_type' ) ) //Apply only for 'product' post types return; $query->set( 'order', 'asc' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'meta_key', 'price' ); } ?> 

Verifique também o Docs para este Actionhook:

https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts