I have a common meta key in all my posts. Now I want to order them DESC by meta value. How do I do that?
You can use pre_get_posts to order your posts.
add_action( 'pre_get_posts', 'custom_post_order' );
function custom_post_order( $query ) {
if ( $query->is_main_query() && $query->is_post_type( 'post' ) ) {
// Set The Meta Key
$query->set( 'meta_key', 'custom_meta_key' );
// Sort by a meta value num
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'DESC' );
}
}
If your meta value is not a number then you can just use meta_value instead of meta_value_num.
$query->set( 'orderby', 'meta_value' );
You can do the same with wp_query.
$args = array(
'post_type' => 'post',
'meta_key' => 'custom_meta_key',
'orderby' => 'meta_value_num',
'order' => 'DESC'
);
$query = new WP_Query( $args );