1

システムに自動生成された投稿がいくつかあります。wp_postsテーブルには追加のフィールドautoがあります。デフォルトでは、このフィールドは NULL ですが、特定の投稿には値があります。このような投稿をメイン ページに表示したくないのですが、どうすれば非表示にできますか?

次のようなものが必要だと思います:

function exclude_post($query) {
    if ($query->is_home) {
        ...
    }

    return $query;
}

add_filter('pre_get_posts', 'exclude_post');

SQL のような条件を追加するにはどうすればよい"auto IS NOT NULL"ですか?

4

1 に答える 1

0

他のユーザーの提案に従っていて、posts テーブルに列を追加する代わりにメタを投稿するように変更した場合は、次のように追加できます。

$query->set( 'meta_query', array(
    array(
        'key' => 'meta_key_for_auto',
        'compare' => 'NOT EXISTS',
    ),
) );

posts テーブルの列に固執する場合、 pre_get_posts はおそらく使用するのに最適なフックではありません。代わりに、posts_where を見てください。 http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_where

于 2013-12-20T09:09:09.737 に答える