Visualizzare i post wp_query della stessa categoria del post

21 set 2016, 17:55:31
Visualizzazioni: 24.5K
Voti: 2

Nella mia pagina del post sto cercando di visualizzare un elenco di altri post della stessa categoria del post originale. Finora ho questo codice che non sembra funzionare:

<?php

    $args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'post__not_in' => array( get_the_ID() ),
        'category'     => array( get_the_category() ),
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

?>

    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

<a class="popup-article-picture" href="<?php the_permalink(); ?>" style="background-image: url('<?php the_post_thumbnail_url(); ?>');"></a>
<a class="popup-article-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

    <?php endwhile; endif; wp_reset_postdata(); ?>
12
Commenti

Questo è all'interno del loop per il post principale? La tassonomia predefinita category è associata al tuo custom post type? Ci sono articoli nella stessa categoria con il valore meta recommended_article == 1? Quando dici che non funziona, cosa ti aspetti di vedere e come valuti che non stia funzionando come dovrebbe?

Andy Macaulay-Brook Andy Macaulay-Brook
21 set 2016 17:59:26

@Andy Questo loop si trova all'interno del template page per il custom post type article. recommended_article == 1 mi permette di filtrare i post che contrassegno come consigliati con l'opzione true/false di ACF.

ERDFX ERDFX
21 set 2016 18:05:37

Non ci sono abbastanza informazioni per aiutarti. Puoi mostrare più parti del file template in questione? Puoi mostrare dove hai associato le Categorie al CPT article?

Andy Macaulay-Brook Andy Macaulay-Brook
21 set 2016 18:08:22

@Andy, ho utilizzato Custom Post Types UI per creare un custom post type e collegarlo alle categorie esistenti di WP, il loop si trova all'interno di single-article.php nel mio template. Sono molto nuovo in PHP e WordPress, quindi questo è più o meno tutto quello che posso dirti.

ERDFX ERDFX
21 set 2016 18:12:08

Grazie - sto solo eliminando i possibili problemi di base. Penso che abbiamo bisogno di vedere l'intero template, se puoi modificare la tua domanda per includerlo.

Andy Macaulay-Brook Andy Macaulay-Brook
21 set 2016 18:13:35

@AndyMacaulay-Brook come vuoi che te lo mostri? L'intero template è piuttosto grande. Oppure hai bisogno solo di vedere single-article.php?

ERDFX ERDFX
21 set 2016 20:15:37

Quel file è il template, quindi sì, ma potenzialmente anche tutti i file che include. Posso modificare la domanda per rimuovere le parti irrilevanti e accorciarla.

Andy Macaulay-Brook Andy Macaulay-Brook
21 set 2016 20:17:17

@Andy link Ho incluso functions.php ma non penso ci sia nulla di importante lì

ERDFX ERDFX
21 set 2016 20:23:39

Grazie - avrei ragione nel dire che l'articolo principale non viene visualizzato? Ad esempio, dove hai usato the_title() non succede nulla? Posso vedere header.php?

Andy Macaulay-Brook Andy Macaulay-Brook
21 set 2016 21:09:20

@Andy Ecco qui il link. No, tutto il resto fino al problema della categoria funziona perfettamente per me

ERDFX ERDFX
21 set 2016 21:24:22

@Andy Ho trovato una soluzione da solo. Grazie per aver cercato di aiutare!

ERDFX ERDFX
21 set 2016 23:30:59

Fantastico! Nessun problema. Scrivi la tua soluzione come risposta e accettala come quella corretta. Questo mantiene ordinato il formato del sito.

Andy Macaulay-Brook Andy Macaulay-Brook
21 set 2016 23:33:22
Mostra i restanti 7 commenti
Tutte le risposte alla domanda 2
1

Ho trovato una risposta:

<?php

    $cats = get_the_category();
    $args = array(
        'post_type' => 'article',
        'post__not_in' => array( get_the_ID() ),
        'posts_per_page' => 5,
        'cat'     => $cats[0]->term_id,
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

?>  

<?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>   

<!--HTML-->

<?php endwhile; endif; wp_reset_postdata(); ?>
21 set 2016 23:17:14
Commenti

non funziona adesso :(

Shiv Singh Shiv Singh
15 mar 2019 11:34:02
1

stai cercando di interrogare il custom post type chiamato article. stai utilizzando le categorie predefinite di WordPress per il post type article? oppure hai registrato una tassonomia personalizzata per quel post type? presumo tu stia usando la categoria predefinita di WordPress per il CPT. il primo passo è ottenere la categoria corrente dalla pagina singola. la seguente funzione restituirà le categorie associate al post dall'esterno del loop.

get_the_category();

restituirà un array di oggetti term. e dovrai ottenere lo slug da questo array da passare alla query. supponiamo di avere solo una categoria assegnata per il singolo post.

$category_obj = get_the_category();
$category = $category_obj[0]->slug;

ora puoi usarlo nella tua query per i post correlati.

$args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'category'     => $category,
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

e se stai utilizzando una tassonomia personalizzata per il post type faccelo sapere così possiamo aiutarti riguardo alle tassonomie personalizzate.

21 set 2016 20:47:48
Commenti

Potresti spiegarmi esattamente cosa devo fare con quel pezzo di codice? Semplicemente aggiungerlo al template non ha funzionato per me. Grazie!

ERDFX ERDFX
21 set 2016 21:19:54