2014-10-29 13 views
5

Ho usato contenuto facile Tipi plug-in & creato Tipo di post in Ricette chiamata WP. Ho anche aggiunto una categoria di tassonomia in esso & creato 4 categorie come antipasto, bevande, ecc.Come posso ottenere tutti i record della categoria di tassonomia nella query di WordPress?

Ora nella query WP ho bisogno di ottenere tutti i record di avviamento. Quindi, come posso ottenerlo?

Sto usando questa query, ma non funziona. Si sta dando tutti i record di Ricette Post Tipo Ecco Query

$recipes = query_posts('post_type=recipes&taxonomy=recipescategory&category_name=Starters'); 

risposta

5

Hai un sacco di errori nel codice e un fraintendimento sulle categorie.

  • Non usare mai query_posts per costruire una query personalizzata

Nota: Questa funzione non è pensato per essere utilizzato dai plugin o temi. Come spiegato più avanti, ci sono opzioni migliori e più performanti per modificare la query principale. query_posts() è un modo eccessivamente semplicistico e problematico per modificare la query principale di una pagina sostituendola con una nuova istanza della query. E 'inefficiente (repliche query SQL) e sarà a titolo definitivo non riuscire in alcune circostanze (in particolare spesso quando si tratta di messaggi impaginazione)

  • Se si deve eseguire una query personalizzata, fare uso di WP_Query o get_posts

  • category_name prende la categoria lumaca, non il nome. Il nome del parametro è ingannevole

  • Le "categorie" appartenenti a una tassonomia personalizzata sono denominate termini. Ho scritto un post che ho incluso anche nel codice che puoi controllare here, descrive le differenze.

  • Per recuperare i post da una tassonomia personalizzata, è necessario utilizzare uno tax_query. I parametri della categoria non funziona qui

Con tutto quanto sopra detto, creare la query in modo che assomiglia a questo

$args = array(
    'post_type' => 'recipes', 
    'tax_query' => array(
     array(
      'taxonomy' => 'recipescategory', 
      'field' => 'name', 
      'terms' => 'Starters', 
     ), 
    ), 
); 
$query = new WP_Query($args); 
if($query->have_posts()){ 
    while($query->have_posts()) { 
     $query->the_post(); 

     //Your loop elements 

    } 
    wp_reset_postdata(); 
} 
+0

grazie per il tuo prezioso suggerimento !! buona giornata –

+0

Nessun problema, ho lasciato un commento sulla tua altra domanda, prova questo codice fornito su quel problema. Se non vieni, lascia un commento –

0

È possibile utilizzare get_posts funzionano

$args = array("post_type"=>"recipes","category_name"=>"starter","posts_per_page"=>20); 
$starters = get_posts($args); 
+0

non sta funzionando –

+0

Stai passando corretta slug per post_type e CATEGORY_NAME? Prova categoria invece di category_name. Devi passare l'ID di categoria. – Gopi

+0

ho fatto tutte queste cose guidate da te e uso anche la categoria al posto di category_name ma ancora non funziona –

1

provare

$ar = array (
     'post_type'=>'recipes', 
     'taxonomy'=>'recipescategory', 
     'category_name'=>'Starters' 
    );  
    $posts = get_posts($ar); 

** ** ciclo foreach

foreach($posts as $p){ ?> 
      <div class="sub_cont">  
       <div class="sub_img"> 

       <?php $url = wp_get_attachment_url(get_post_thumbnail_id($p->ID));?>  
       <a href="<?php echo $permalink = get_permalink($p->ID); ?>"><img src="<?php echo $url; ?>" longdesc="URL_2" alt="Text_2" /> </a> 

      </div> 
      <div class="desc_title"> 
       <a href="<?php echo $permalink = get_permalink($p->ID); ?>"> 
        <?php echo $post_title=$p->post_title; ?> 
       </a> 
      </div> 
      <div class="cont_add"></div>   
     </div> 
    <?php } ?> 
Problemi correlati