web-dev-qa-db-fra.com

Comment exclure les publications par valeur de champ personnalisé?

Je dois exclure les publications qui ont une valeur de "ville" de "Melbourne" dans le champ personnalisé.

Après de longues recherches, je pense que la solution pourrait consister en 2 parties.

Dans functions.php: une fonction permettant d’obtenir les identifiants de publication pour toutes les publications qui ont une valeur de ville personnalisée dans le champ 'Melbourne'.

Puis dans ma boucle: Exclure ces publications en utilisant l'argument post_not_in, en utilisant les identifiants renvoyés de la première boucle?

Est-ce la bonne approche? Quel est le bon code?

1
Matt

Vous pouvez utiliser une méta requête dans une requête wp pour obtenir les publications requises.

  $args = array(
   'meta_query' => array(
     'relation' => 'OR',
      array(
        'key' => 'city',
        'value' => 'Melbourne',
        'compare' => 'NOT LIKE'
      ),
      array(
        'key' => 'city',
        'value' => 'Melbourne',
        'compare' => 'NOT EXISTS'
      )
   )
  );
  $query = new WP_Query( $args );
4
sven

Je pense qu'obtenir TOUS les articles avec le city = Melbourne, puis les comparer à TOUS les articles que vous tentez d'afficher sur la page n'est pas la bonne solution.

Pourquoi ne pas utiliser la boucle unique que vous devriez déjà avoir et mettre quelque chose comme ceci pour vérifier si la ville est Melbourne?

 <?php
    //check custom field 'city'
    $custom_field = get_post_custom();              
    if(isset($custom_field["city"][0]) && $custom_field["city"][0] != 'Melbourne')
    {
        //output
    }
    else
    { 
        //do something else?
    }
 ?>
0
KnightHawk