Filtraggio dei post per metadati post


8

Voglio filtrare i post in modo tale che get_post_meta($post->ID, "project_cat", true)vengano visualizzati solo i post, per i quali (restituisce un ID post) uguale al mio valore specificato.

Un modo per farlo?

Sono particolarmente interessato ai modi per renderlo compatibile con il plugin WP-Paginate .


Il 56% è piuttosto basso - ricorda di tornare alle tue vecchie domande e di accettare le risposte corrette. Li toglie dalla pila "senza risposta" e aiuta gli altri a trovare soluzioni più facilmente. Le persone saranno anche più disposte a offrire risposte se sanno che l'OP risponderà a loro. :)
Stephen Harris,

Vedi la mia risposta qui sotto. Non è chiaro quando / dove si desidera filtrare i post. Se aggiorni la tua risposta per includerla, posso suggerire quali 'condizionali' devi controllare. In alternativa, vedi l'esempio query_post collegato. Il principio generale è lo stesso: impostare il meta_queryvalore.
Stephen Harris,

Risposte:


11

L' WP_Queryoggetto accetta un argomento meta post. In generale, vuoi fare quanto segue:

  $my_query = new WP_Query( 
    array(
      'post_type' => 'post',
      'meta_query' => array(
        array(
          'key' => 'project_cat',
          'value' => 'my-value',
        )
      ),

        // Other query properties
    ) 
  );

Dove "my-value" è il "valore specificato".

Esempio di utilizzo:

  add_action( 'pre_get_posts' , 'my_pre_get_posts' );

  function my_pre_get_posts( $query ) {

    // Check this is main query and other conditionals as needed
    if( $query->is_main_query() ) {
        $query->set( 
          'meta_query', 
          array( 
            array(
              'key' => 'project_cat',
              'value' => 'my-value'
            )
          )
        );
    }

  }

Vedi WP_Query , pre_get_posts . Tutti i condizionali sono a tua disposizione. Attualmente questo funziona su ogni query principale - che probabilmente non vuoi.

In alternativa è possibile utilizzare query_posts(un modo più semplice, ma molto meno efficiente) per modificare la query solo per un'istanza specifica in un modello.


@TahirYasin - vedi il codice .
Stephen Harris,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.