カスタムフィールドのある投稿を除外したいのですが。 my_custom_field_ignore
が設定されていて1
がこの投稿を無視するならば。設定されていない場合はそれを含めてください。
これは私が持っているものです
$args = array(
'post_type' => $post_type,
'offset' => $offset,
'meta_query' => array(
array(
'key' => 'my_custom_field_ignore',
'value' => '1',
'compare' => '!=',
)
)
);
これはmy_custom_field_ignore
が1
以外に設定されている投稿に対してのみ機能します。
すべての投稿を含めるにはどうすればよいですか(もちろんmy_custom_field_ignore = 1
の投稿を除く)。
編集:
これがWP 3.5以降での機能です。
'meta_query' => array(
array(
'key' => 'my_custom_field_ignore',
'compare' => 'NOT EXISTS',
)
)
この単純なmy_custom_field_ignore
の外観を検索するので、値は無視されます。これは最初の場所ではうまくいく可能性がありますが、1
を0
に変更して含めることを期待すると、ユーザーは混乱するかもしれません。
しかし3.3と3.4は何らかの条件付きチェックが必要です。
編集2
チェックされた答えが(少なくとも3.5+のために)トリックをしているようです。何らかの奇妙な理由で、それは最初の投稿 "Hello World"を無視します。 my_custom_field_ignore
を追加し、その後それを削除した後それは働いています
条件を定義すると、
A: my_custom_field_ignore EXISTS
B: my_custom_field_ignore = 1
NOT ( A && B )
は以下と同等です。
NOT ( A ) || NOT ( B )
私達の場合の意味
( my_custom_field_ignore NOT EXISTS ) || ( my_custom_field_ignore != 1 )
そのため、WP 3.5+(未テスト)について次のことを試すことができます。
$args = array(
'post_type' => $post_type,
'offset' => $offset,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'my_custom_field_ignore',
'value' => '1',
'compare' => '!=',
),
array(
'key' => 'my_custom_field_ignore',
'compare' => 'NOT EXISTS',
'value' => '1', #<-- just some value as a pre 3.9 bugfix (Codex)
),
)
);
整数を使用している場合は、関数serializeを使用する必要があります。
$args = array(
'meta_query' => array(
array(
'key' => 'my_meta_key',
'value' => serialize(strval($my_vale)),
'compare' => 'LIKE'
)
)
);
$posts = get_posts( $args );
そしてあなたは準備ができています、
print_r($posts);
結果を見る