2017-12-28 31 views
0

私が要求した順序で投稿を取得したい。Wordpress WP_Query削除ORDER BY wp_posts.menu_order

幸いにも、質問引数 - > orderby = 'post_name__in'がありました。

しかし、私は他の順序で投稿を受け取ります。

クエリの要求が表示されます。私はORDER BY wp_posts.menu_orderが問題だったことがわかり

ここ

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID 
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_name 
IN (
    'post title 1', 
    'post title 2', 
    'post title 3', 
) 
AND wp_posts.post_type = 'post' 
AND ((wp_posts.post_status = 'publish')) 
ORDER BY wp_posts.menu_order, 
FIELD( 
    wp_posts.post_name, 
    'post title 1', 
    'post title 2', 
    'post title 3', 
) 
LIMIT 0, 9 

phpmyadminでそれを削除してからクエリを実行するとうまくいきます。

私は望む順番で投稿を受け取ります。

したがって、を削除するには、フック&フィルタまたは他の言葉使いの方法を使用しますか?

答えて

0

回答が見つかりました。

のためにwp_posts.menu_orderが追加されました投稿の種類プラグイン。このプラグインで

add_filter('posts_orderby', array($this, 'posts_orderby'), 99, 2); 
~ 
~ 
~ 
//check for ignore_custom_sort 
if (isset($query->query_vars['ignore_custom_sort']) && $query>query_vars['ignore_custom_sort'] === TRUE) 
    return $orderBy; 
if(trim($orderBy) == '') 
    $orderBy = "{$wpdb->posts}.menu_order " . $order; 
else 
    $orderBy = "{$wpdb->posts}.menu_order". $order .", " . $orderBy; 
~ 
~ 
return $orderBy; 

だから、私は私のクエリ引数に$args['ignore_custom_sort'] = trueを追加します。

これは機能します。

1

プラグインを直接変更しない別の解決策は、ポストタイプオーダーを削除することです。私は「直観的なカスタムポストオーダー」と呼ばれる別のものを見つけました。注文することを妨げることはなく、より完全です。

+0

ありがとうございました! – RPF

関連する問題