J'aime exclure certains messages avec un champ personnalisé. Donc, si my_custom_field_ignore
isset AND 1
ignore ce message. Si ce n'est pas défini, incluez-le.
C'est ce que j'ai
$args = array(
'post_type' => $post_type,
'offset' => $offset,
'meta_query' => array(
array(
'key' => 'my_custom_field_ignore',
'value' => '1',
'compare' => '!=',
)
)
);
Cela ne fonctionne que pour les publications pour lesquelles my_custom_field_ignore
est défini sur autre chose que 1
.
Comment puis-je inclure tous les messages (bien sûr pas ceux avec my_custom_field_ignore = 1
)?
Modifier:
Voici comment cela fonctionne sur WP 3.5+
'meta_query' => array(
array(
'key' => 'my_custom_field_ignore',
'compare' => 'NOT EXISTS',
)
)
Cette simple recherche de l'apparence de my_custom_field_ignore
va donc ignorer la valeur. Bien que cela puisse fonctionner en premier lieu, les utilisateurs peuvent être désorientés en changeant 1
en 0
et s’attendent à être inclus.
Il semble que les versions 3.3 et 3.4 nécessitent une vérification conditionnelle.
Modifier 2
Il semble que la réponse cochée fasse l'affaire (au moins pour 3.5+). Pour une raison quelconque, il ignore le tout premier message "Hello World". Après avoir ajouté my_custom_field_ignore
et après l'avoir supprimé, tout fonctionne
Si on définit les conditions:
A: my_custom_field_ignore EXISTS
B: my_custom_field_ignore = 1
alors NOT ( A && B )
est équivalent à:
NOT ( A ) || NOT ( B )
ce qui signifie dans notre cas:
( my_custom_field_ignore NOT EXISTS ) || ( my_custom_field_ignore != 1 )
Nous pourrions donc essayer ce qui suit pour WP 3.5+ (non testé):
$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)
),
)
);
vous devez utiliser la fonction sérialiser si vous utilisez des entiers:
$args = array(
'meta_query' => array(
array(
'key' => 'my_meta_key',
'value' => serialize(strval($my_vale)),
'compare' => 'LIKE'
)
)
);
$posts = get_posts( $args );
et vous êtes prêt
print_r($posts);
et voir les résultats