web-dev-qa-db-ja.com

メタ値と日付で投稿を注文する

1つの投稿メタ値と日付に基づいて投稿を並べ替えようとしています。私はこのプラグイン( https://github.com/JonMasterson/WordPress-Post-Like-System )を使って私の投稿にシステムを追加しています。

私が使っているコードは以下の通りです。

$args = array(
    'numberposts' => 15,
    'offset' => 0,
    'category' => 0,
    'meta_key' => '_post_like_count',
    'orderby' => 'meta_value_num post_date',
    'order' => 'DESC',
    'post_type' => 'post',
    'suppress_filters' => true 
);

$recent_posts = wp_get_recent_posts( $args );

少なくとも一人の投稿が好きなら、プラグインはメタキー_post_like_countをテーブルに追加します。上記のコードは少なくとも1つのようなcountを持つ投稿を返します(15のうち3と言います)。

メタキーを持たない残りの投稿を取得し、日付に基づいて並べ替えるにはどうすればよいですか。

1
Arjun S Kumar

両方の投稿にメタキーがある場合とない場合には、両方の投稿にキーがある場合とない場合の両方を選択するOR relationメタクエリが必要です。

$args = array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => '_post_like_count',
            'compare' => 'EXISTS'
        ),
        array(
            'key' => '_post_like_count',
            'compare' => 'NOT EXISTS'
        )
    ),
    'orderby' => 'meta_value_num post_date',
    'order' => 'DESC'
);

$recent = new WP_Query( $args );
1
Milo