ドキュメントはpre_get_post
にあります。 ここでフィルタリング
問題は、実際には、取得するpost_idsをどのように設定しているかにあるように見えます。上記のリンクを参照すると、$query
で設定できるさまざまな値を確認できます。 フィルタに渡されるオブジェクト、およびpost_id
はそれらの1つではないため、設定すると「機能」し、p
を設定すると「機能しない」のです。 。後者は単一の投稿ID用であるため、100が必要な場合は、$query->set('p', 100)
を使用します。 。投稿IDが配列内にある結果を返したい場合は、$query->set('post__in', array(100, 120))
を使用します。 。 SQLコードはIDを返すだけなので、オブジェクトを返すのではなく、配列を直接取得できます。タイトルとprint_r
をエコーすると想定しています。 行はデバッグ中です:
// get results as a numeric array
$post_ids = $wpdb->get_results($request, ARRAY_N);
// pass post id array to $query
$query->set( 'post__in', $post_ids );
$query
に既存の競合するパラメータが設定されている場合も、結果が得られない可能性があります。 。これらの値は、var_dump($query->query_vars)
で確認できます。 競合する可能性のあるものはすべて空の文字列に設定します。この場合、$query->set( 'm', '' );