Supporto » Aspetto = Temi » [SOLVED] query complessa tra categorie e campi correlati

  • Buongiorno a tutti, sto tentando in tutti i modi di fare questa cosa ma non riesco:

    In pratica vorrei fare una lista, la quale divide i diversi articoli per la loro categoria, questa lista però, deve “pescare” solo gli articoli correlati attraverso un campo.

    In pratica la desiderata è avere diversi menu ai quali associo i diversi piatti e in frontend in automatico viene generata una lista divisa per le categorie dei piatti (primi, secondi, bevande, dolci ecc…).

    Ad oggi sono riuscito a fare le due cose divise (lista divisa e filtro per campi), ma non riesco a fare un merge delle due cose.

    QUESTO è IL CODICE PER I CAMPI CORRELATI:

    
    <div class="blockGroup">	
    							
    /// CORRELATI ///
    <!-- ##########  --  SIMPLE LIST PLATTERS -- ########## -->
    <?php
      $post_objects = get_post_meta( get_the_ID(), '_ab_theme_select_platter', true );
    ?>
    
    <?php
      if ($post_objects) :  // APRO LA CONDIZIONALE: QUINDI SE HO POST FACCIO...
    ?>
    
    <div class="blockGroup">
    
      <section class="simpleList">
    
        <ul>
    
          <?php 
             foreach( $post_objects as $post ): setup_postdata($post); 
           ?> 
           
           <li> 
    
             <?php  
               include(locate_template('contents/entity-3/list-item.php')); 
             ?> 
    
           </li>
     
           <?php endforeach; ?>
    
         </ul>
    
       </section>
    
    </div>
    
    <?php else : echo ''; endif; wp_reset_postdata(); ?>
    
    </div>
    
    

    QUESTO è IL CODICE PER IL LISTING DIVISO PER CATEGORIE:

    
    <div class="blockGroup">	
      <section class="simpleList">
        /// DIVISI PER CAT ///
        
       <?php  
         $terms = get_terms('tax_entity_3'); 
         $count = count($terms); 
        ?>
    
        <?php 
          
          if ($count > 0) 
    	{ 
              foreach ( $terms as $term) 
    	{ 
         ?>
    				
         <h2><?php echo $term->name; ?></h2>   
     
         <ul class="taxonomy_group">
         
          <?php 
    
          $loop = new WP_Query(
    	array( 'tax_entity_3' => $term->slug )
          );
    
          while ( $loop->have_posts() ) : $loop->the_post(); ?>
          
          <li>
    
          <?php
             include(locate_template('contents/entity-3/list-item.php')); 
          ?>
    
          </li>
          <?php endwhile; ?>  
         </ul>
    
    <?php } } wp_reset_postdata(); ?>
    
    </section>
    </div>
    
    

    ————

    GRAZIE

    • Questo topic è stato modificato 5 anni, 11 mesi fa da abrugora.
    • Questo topic è stato modificato 5 anni, 11 mesi fa da abrugora.
    • Questo topic è stato modificato 5 anni, 11 mesi fa da Cristiano Zanca.
Stai visualizzando 3 risposte - dal 1 al 3 (di 3 totali)
  • Ciao @abrugora,
    così ad occhio credo potresti utilizzare il parametro di WP_Query post__in.
    https://codex.wordpress.org/it:Riferimento_classi/WP_Query#Parametri_Articolo_e_Pagina

    Quindi ciò di cui devi sincerarti è che ciò che restituisce l’istruzione qui sotto sia effettivamente un array di post ID. Non credo sia pensabile che nel DB come campo meta sia mantenuto un array di post object. Questa è chiaramente una congettura. Che tema usi? Immagino sia un post meta introdotto da un tema, vero?

    <?php
      $post_objects = get_post_meta( get_the_ID(), '_ab_theme_select_platter', true );
    ?>

    (nel caso sia un array di post ID io chiamerei la variabile $post_IDs così da non confonderti).

    Quindi il merge dei due codici consisterebbe nell’intero secondo a cui andreai ad aggiungere una riga del primo (quella di sopra) e un nuovo parametro nella query:

          $loop = new WP_Query(
    	array( 'tax_entity_3' => $term->slug, 'post__in' => $post_objects )
          );

    Chiaramente ciò è valido solo se davvero il tuo $post_objects è un array di ID.
    Non avendo a disposizione il tuo DB e tema non posso esserne certo.

    Spero ti sia d’aiuto.

    N.B.
    Come credo tu sappia, agire sul codice PHP può comportare la famosa WSOD, immagino tu sappia gestire casi del genere.

    Chi ha creato la discussione abrugora

    (@abrugora)

    Funziona, mi mancava appunto il parametro post__in e non riuscivo a trovarlo spulciando nel codex.

    Grazie mille @d4z_c0nf

    Figurati @abrugora
    sono contento ti sia stato d’aiuto 😉

Stai visualizzando 3 risposte - dal 1 al 3 (di 3 totali)
  • Il topic ‘[SOLVED] query complessa tra categorie e campi correlati’ è chiuso a nuove risposte.