Filtrarea postărilor după datele meta ale postării

10 apr. 2012, 18:52:17
Vizualizări: 26.5K
Voturi: 9

Vreau să filtrez postările în așa fel încât să se afișeze doar postările pentru care get_post_meta($post->ID, "project_cat", true) (care returnează un ID de postare) este egal cu valoarea mea specificată.

Există vreo modalitate de a face acest lucru?

Sunt interesat în special de modalități de a face acest lucru compatibil cu plugin-ul WP-Paginate.

2
Comentarii

56% este destul de mic - te rog să nu uiți să revii la întrebările tale vechi și să accepți răspunsurile corecte. Astfel le scoți din lista de 'nerăspunsuri' și ajuți alții să găsească soluții mai ușor. De asemenea, oamenii vor fi mai dispuși să ofere răspunsuri dacă știu că autorul întrebării le va răspunde. :)

Stephen Harris Stephen Harris
10 apr. 2012 18:58:34

Vezi răspunsul meu de mai jos. Nu este clar când/unde vrei să filtrezi postările. Dacă actualizezi întrebarea cu aceste detalii, pot să sugerez ce 'condiționale' trebuie să verifici. Alternativ, poți consulta exemplul linked query_post. Principiul general este același - setarea valorii meta_query.

Stephen Harris Stephen Harris
10 apr. 2012 19:24:46
Toate răspunsurile la întrebare 1
1
11

Obiectul WP_Query acceptă un argument pentru meta datele postării. În general, veți dori să faceți următoarele:

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

        // Alte proprietăți ale interogării
    ) 
  );

Unde 'my-value' reprezintă 'valoarea specificată' de dumneavoastră.

Exemplu de utilizare:

  add_action( 'pre_get_posts' , 'my_pre_get_posts' );

  function my_pre_get_posts( $query ) {

    // Verifică dacă aceasta este interogarea principală și alte condiții, după caz
    if( $query->is_main_query() ) {
        $query->set( 
          'meta_query', 
          array( 
            array(
              'key' => 'project_cat',
              'value' => 'my-value'
            )
          )
        );
    }

  }

Consultați WP_Query, pre_get_posts. Toate condiționalele sunt disponibile pentru dumneavoastră. În prezent, acest cod rulează la fiecare interogare principală - ceea ce probabil nu doriți.

Alternativ, puteți folosi query_posts (o metodă mai simplă, dar mult mai puțin eficientă) pentru a modifica interogarea doar pentru o instanță specifică într-un șablon.

10 apr. 2012 19:23:07
Comentarii

@TahirYasin - vezi codex.

Stephen Harris Stephen Harris
12 sept. 2013 11:50:24