Afișarea articolelor din aceeași categorie folosind wp_query

21 sept. 2016, 17:55:31
Vizualizări: 24.5K
Voturi: 2

Pe pagina articolului meu încerc să afișez o listă cu alte articole din aceeași categorie ca și articolul original. Până acum am următorul cod care nu pare să funcționeze:

<?php

    $args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'post__not_in' => array( get_the_ID() ), // Exclude articolul curent
        '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
Comentarii

Este acest lucru în bucla pentru postarea principală? Este taxonomia încorporată category atașată la tipul tău personalizat de postare? Există articole în aceeași categorie cu valoarea meta recommended_article == 1? Când spui că nu funcționează, la ce te aștepți să vezi și cum evaluezi că nu funcționează așa cum ar trebui?

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept. 2016 17:59:26

@Andy Această buclă se află în pagina de șablon pentru tipul personalizat de postare article. recommended_article == 1 îmi permite să filtrez postările pe care le marchez ca recomandate cu adevărat/fals din ACF.

ERDFX ERDFX
21 sept. 2016 18:05:37

Nu există suficiente informații pentru a te ajuta. Poți arăta mai multe din fișierul de șablon în cauză? Poți arăta unde ai atașat Categoriile la CPT article?

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept. 2016 18:08:22

@Andy, am folosit Custom Post Types UI pentru a crea un tip de postare personalizată și l-am atașat la categoriile existente din WP, bucla este în interiorul fișierului single-article.php din șablonul meu. Sunt foarte nou în PHP și WordPress, așa că cam atât pot să spun.

ERDFX ERDFX
21 sept. 2016 18:12:08

Mulțumesc - doar elimin posibile probleme de bază. Cred că trebuie să vedem întregul șablon, dacă poți edita întrebarea ta pentru a-l include.

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept. 2016 18:13:35

@AndyMacaulay-Brook cum vrei să ți-l arăt? Șablonul întreg este destul de mare. Sau ai nevoie doar de single-article.php?

ERDFX ERDFX
21 sept. 2016 20:15:37

Acest fișier este șablonul, deci da, dar posibil și orice fișiere pe care le include. Pot edita întrebarea pentru a elimina părțile irelevante și a o scurta.

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept. 2016 20:17:17

@Andy link Am inclus functions.php dar nu cred că există ceva important acolo

ERDFX ERDFX
21 sept. 2016 20:23:39

Mulțumesc - aș avea dreptate să spun că articolul principal nu se afișează? De exemplu, acolo unde ai folosit the_title() nu se întâmplă nimic? Pot să văd header.php?

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept. 2016 21:09:20

@Andy Uite aici link. Nu, totul până la problema cu categoria funcționează perfect pentru mine

ERDFX ERDFX
21 sept. 2016 21:24:22

@Andy Am găsit singur o soluție. Mulțumesc că ai încercat să mă ajuți!

ERDFX ERDFX
21 sept. 2016 23:30:59

Super! Nici o problemă. Scrie soluția ta ca răspuns și accept-o ca fiind cea corectă. Asta menține formatul site-ului ordonat.

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept. 2016 23:33:22
Arată celelalte 7 comentarii
Toate răspunsurile la întrebare 2
1

Am găsit un răspuns:

<?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 sept. 2016 23:17:14
Comentarii

nu funcționează acum :(

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

încercați să interogați tipul de postare personalizat numit article. utilizați categoriile implicite din WordPress pentru tipul de postare article? sau ați înregistrat vreo taxonomie personalizată pentru acel tip de postare? presupun că utilizați categoria implicită din WordPress pentru CPT. prin urmare, primul pas este să obțineți categoria curentă de pe pagina single. următoarea funcție va returna categoriile atașate postării din afara buclei.

get_the_category();

va returna un array de obiecte termen. și va trebui să obțineți slug-ul din acest array pentru a-l pasa în interogare. să presupunem că avem doar o singură categorie atribuită pentru postarea single.

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

acum puteți folosi acest lucru în interogarea pentru postări similare.

$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 );

și dacă utilizați o taxonomie personalizată pentru tipul de postare, atunci anunțați-ne pentru a vă putea ajuta în legătură cu taxonomiile personalizate.

21 sept. 2016 20:47:48
Comentarii

Poți să-mi explici exact ce trebuie să fac cu acel fragment de cod? Doar adăugarea lui în template nu a funcționat pentru mine. Mulțumesc!

ERDFX ERDFX
21 sept. 2016 21:19:54