検索結果をカスタム投稿タイプで並べ替える必要があります。問題:注文はカスタムです。
私は5つの異なる投稿タイプがあります、そして私はそのような順序を得ました:
私は次のように注文したいのですが。
これは私がこれまでに持っているものです、要素はそれらの投稿タイプによってグループ化されて、タイトルによってソートされます。素晴らしい。今必要なのはカスタム注文だけです。
どんなヒント?
add_filter( 'posts_orderby', 'order_search_by_posttype', 10, 2 );
function order_search_by_posttype( $orderby ){
global $wpdb;
if( ! is_admin() && is_search() ) :
$orderby = "{$wpdb->prefix}posts.post_type ASC, {$wpdb->prefix}posts.post_title ASC";
endif;
return $orderby;
}
私はキーを見つけました:SQL CASE Expression
add_filter( 'posts_orderby', 'order_search_by_posttype', 10, 2 );
function order_search_by_posttype( $orderby, $wp_query ){
if( ! $wp_query->is_admin && $wp_query->is_search ) :
global $wpdb;
$orderby =
"
CASE WHEN {$wpdb->prefix}posts.post_type = 'artist' THEN '1'
WHEN {$wpdb->prefix}posts.post_type = 'post' THEN '2'
WHEN {$wpdb->prefix}posts.post_type = 'artwork' THEN '3'
WHEN {$wpdb->prefix}posts.post_type = 'publication' THEN '4'
ELSE {$wpdb->prefix}posts.post_type END ASC,
{$wpdb->prefix}posts.post_title ASC";
endif;
return $orderby;
}