Cum să afișezi postări înrudite după categorie sau tip de postare personalizat?

26 iun. 2014, 17:17:15
Vizualizări: 15.1K
Voturi: 1

Caut cea mai bună metodă pentru a crea, probabil, un tip de postare personalizat unde poți filtra în sidebar categoriile asociate acelui custom post type.

Iată site-ul la care lucrez acum. Inițial, profilele de studenți și donatori ar trebui să fie un fel de postare sau categorie care poate fi actualizată dinamic când se creează un profil nou. De exemplu, Health & Science, Student Success și Creative community au propriile seturi de profile specifice.

Să presupunem că John Doe este un nou profil de student pentru Student Success. Pot să îl etichetez să apară doar pe acea pagină, dar când vizualizez postarea lui individuală, am probleme cu afișarea categoriilor sau a profilor înrudite, în acest caz Student Success. Deci când vizualizezi profilul lui John Doe, celelalte profile din Student Success ar trebui listate în sidebar.

Am observat că WordPress folosește același fișier template single.php, așa că sidebar-ul pe care îl am pentru single.php este folosit și pentru profile, ceea ce nu vrem.

În general, dacă navighezi prin Health & Science, Student Success și Creative community, caut o configurare similară, dar în loc de un proces în 4 pași pe care clientul trebuie să îl facă la încărcarea unui nou profil, vreau doar un singur pas.

Configurația mea actuală este să adaug noul profil ca pagină, apoi să merg în zona de meniu din dashboard și să adaug noul profil în meniu.

Codul meu actual pentru template-ul de pagină.

7
Comentarii

Deci practic ceea ce vrei este ca bara laterală din single.php să detecteze postarea care este afișată în șablonul de pagină și să folosească o categorie sau tip de postare pentru a determina ce profiluri/postări înrudite să afișeze? Deci acum Health & Science, Student Success și Creative community sunt doar pagini cu șabloane în loc de un tip de postare personalizat?

RachieVee RachieVee
26 iun. 2014 18:08:31

Da. Am căutat declarațiile condiționale pe care WordPress le folosește, dar nu reușesc să înțeleg cum să fac să citească acea pagină și să afișeze postarea înrudită.

jose jose
26 iun. 2014 20:15:28

Ok, dă-mi puțin timp să încerc să imit ceea ce vrei într-o instalare WordPress de-a mea și voi vedea ce pot să ofer.

RachieVee RachieVee
27 iun. 2014 17:32:22

Apreciez ajutorul tău @RachieVee. Dacă începe să devină prea multă bătaie de cap, nu-ți face griji. Mulțumesc!

jose jose
27 iun. 2014 18:03:33

Oh, frate, haha, da, îmi ia ceva timp, dar dacă nu te deranjează că nu ofer cod, pot măcar să încerc să te îndrept în direcția corectă. Văd în template-ul tău că interoghezi postări cu o categorie - de ce nu creezi o nouă buclă în secțiunea ta Donor Profiles care să obțină postări după acea categorie și să listeze linkurile (presupunând că categoria este ceva gen Health-Science sau una din cele trei secțiuni)? Sau poți folosi post meta în profilele tale dacă nu vrei să extragi o categorie pentru un meniu creat cu o buclă get_posts. Simt că nu m-am exprimat clar? Spune-mi.

RachieVee RachieVee
27 iun. 2014 18:21:07

Nu-ți face griji. Am experiență decentă în codare cu WordPress. Problema mea este că dacă folosesc funcția de postări în WordPress și setez categorii specifice pentru acele profile, WordPress folosește template-ul single.php pentru toate postările. Așa că postările din News & Events vor avea aceeași bară laterală pe care nu o doresc. Vreau ca bara laterală din News & Events să rămână așa cum este acum, dar să afișez postările conexe pentru postările de profil. Așa că încerc să înțeleg cum să citesc dinamic categoria paginii curente pentru a afișa categoriile conexe în bara laterală stângă. Uneori simt că nu mă exprim clar, haha.

jose jose
27 iun. 2014 20:39:16

Hmm, ce zici de manipularea clasei body dacă nu afișează deja categoria ca o clasă - și folosind asta ca mijloc de a detecta categoria în bara laterală, controlând afișarea barei laterale verificând acea clasă body a categoriei? Am avut impresia că profilele tale sunt afișate într-o pagină, deci nu ar folosi doar postările individuale single.php? Presupun că depinde și de tema ta...

RachieVee RachieVee
30 iun. 2014 07:06:49
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 2
2
<?php
// Obține postări înrudite din aceeași categorie
$related = get_posts( array( 
    'category__in' => wp_get_post_categories($post->ID), 
    'numberposts' => 5,
    'post_type' => 'news', 
    'post__not_in' => array($post->ID) 
) );

if( $related ) foreach( $related as $post ) {
    setup_postdata($post); ?>
        <li>
        <?php  the_post_thumbnail('thumbnail', array('alt' => 'Miniatură articol înrudit', 'title' => get_the_title())); ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a>
        </li>

<?php }
wp_reset_postdata(); ?>
9 sept. 2014 07:14:07
Comentarii

Cum răspunde acest lucru la întrebare?

Rarst Rarst
9 sept. 2014 09:56:50

Aceasta a funcționat pentru mine..

rwzdoorn rwzdoorn
15 iul. 2015 14:42:59
0

Mai întâi trebuie să faci o interogare cu o taxonomie personalizată sau orice altceva dorești pentru a afișa articolele tale

  function related_posts_by_taxonomy( $post_id, $taxonomy, $args=array() ) {
        $query = new WP_Query();
        $terms = wp_get_object_terms( $post_id, $taxonomy );
    
        // Asigură-te că avem termeni din articolul curent
        if ( count( $terms ) ) {
            $post_ids = get_objects_in_term( $terms[0]->term_id, $taxonomy );
            $post = get_post( $post_id );
            $post_type = get_post_type( $post );        
    
            $args = wp_parse_args( $args, array(
                    'post_type' => $type,
                    'post__in' => $post_ids,
                    'taxonomy' => $taxonomy,
                    'term' => $terms[0]->slug,
    
                ) );
            $query = new WP_Query( $args );
        }
    
        // Returnează rezultatele sub formă de interogare
        return $query;
    }

Pentru a lista rezultatele poți folosi codul de mai jos

    $related =  related_posts_by_taxonomy( $post->ID, 'service_category' );
                    while ( $related->have_posts() ): $related->the_post(); ?>
                    <li class="folk-grid__col all">
                                <img class="" data-src="<?php echo get_template_directory_uri(); ?>/images/icons-service/<?php $icon_service = get_post_meta( $post->ID, 'service_options_icons', true ); echo $icon_service; ?>.svg" alt="<?php echo get_the_title( $post->ID ); ?>" src="<?php echo get_template_directory_uri(); ?>/images/icons-service/<?php echo $icon_service; ?>.svg">
                                   <span><a href="<?php echo esc_url( get_permalink( $post->ID ) ); ?>"><?php echo get_the_title( $post->ID ); ?></a></span>
                                     <div>
                                       <a rel="nofollow" class="btn folk-button" style="top: 35%;width: 62%;padding: 10px;" href="<?php echo esc_url( get_permalink( $post->ID ) ); ?>">Cere ofertă</a>
                                     </div>
                               </li>
    endwhile; 
13 iul. 2021 20:58:58