Thanks to Brad Dalton at wpsites.net for getting me to the answer.
-
Install Advanced Custom Fields plugin. Create a custom field called price, formatted as a number.
-
Use the code below (based on Bill Erickson’s tutorial):
add_action( 'pre_get_posts', 'kr_change_posts_order' );
function kr_change_posts_order( $query ) {
if ( $query->is_main_query() && !is_admin() && !is_page() ) {
$orderby = genesis_get_custom_field( 'price' );
$query->set( 'cat', ( array( 5, 6, 15 ) ) );
$query->set( 'meta_key', 'price' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'DESC' );
}
}
This sorts by price, descending, for three post categories with IDs 5, 6 and 15.