Obtenez des messages par méta-valeur


27

Je voudrais répertorier tous les messages qui ont une clé de cp_annonceuravec la valeur professionnel.


8
Veuillez noter que vous devez avoir recherché le problème et tenté de le résoudre avant de poster une question. Si vous n'aviez pas été tout nouveau ici, j'aurais probablement rejeté la question et poursuivi, plutôt que d'y répondre. Dans l'esprit de "Welcome to the Stack", voici votre abeille libre. Veuillez consulter la section Comment poser des questions futures.
s_ha_dum

Celui-ci m'a fait perdre du temps à cause de la réponse non acceptée ci-dessous. Je laisse donc ici mes 2 cents. Il n'a jamais répondu ni accepté la réponse ci-dessous. Pourquoi ne supprimez-vous pas simplement ces questions alors qu'il y a des dizaines de questions similaires ici?
mircobabini

Réponses:



8

Il y a deux façons de procéder:

  1. Intercepter la requête principale sur pre_get_posts:

    add_action( 'pre_get_posts', function( $query )
    {
        // only handle the main query
        if ( ! $query->is_main_query() )
            return;
    
        $query->set( 'meta_key',   'cp_annonceur' );
        $query->set( 'meta_value', 'professionnel' );
    } );
  2. Ajouter une requête supplémentaire

    $second_loop = get_posts( array(
        'meta_key'   => 'cp_annonceur',
        'meta_value' => 'professionnel',
    ) );

2
Ravi de connaître le chemin court avec get_posts ()
Andrew Welch

8

J'ai utilisé une sélection personnalisée (peut-être de meilleures performances)

$posts = $wpdb->get_results("SELECT * FROM $wpdb->postmeta
WHERE meta_key = 'cp_annonceur' AND  meta_value = 'professionnel' LIMIT 1", ARRAY_A);

Inspiré de https://tommcfarlin.com/get-post-id-by-meta-value/


1
Il pourrait avoir de meilleures performances, mais il jette l'idée d'avoir des fonctions Wordpress pour rechercher (et mettre en cache) les données. Et, aussi, que se passera-t-il si WP décide de changer la structure de la table? :)
Erenor Paz

2

Nous pouvons obtenir le résultat souhaité avec la requête Meta de WordPress:

// the meta_key 'diplay_on_homepage' with the meta_value 'true'
$cc_args = array(
    'posts_per_page'   => -1,
    'post_type'        => 'post',
    'meta_key'         => 'cp_annonceur',
    'meta_value'       => 'professionnel'
);
$cc_query = new WP_Query( $cc_args );

Pour un guide plus détaillé concernant la méta-requête, suivez ce blog: http://www.codecanal.com/get-posts-meta-values/


Puis-je savoir pourquoi cette post_per_pagevaleur est -1?
Abhay Gawade

1
@AbhayGawade Vous pouvez limiter le nombre maximum de résultats en utilisant ce paramètre, -1 signifie aucune limite.
Kush
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.