A WordPress-hez nem nagy szám 1-1 olyan plugint találni, melyek segítségével a cikkhez kapcsolódó, egyéb cikket is ki lehet listázni. Akár kategória, akár tag-ek alapján.
Ám a sok plugin lassítja a WordPress-t, frissítéskor nem is biztos hogy kompatibilis marad a plugin a WordPress-sel, illetve magát a plugint is frissíteni kell időnként (már ha adnak ki 1-1 új verziót belőle).
Épp ezért, amikor csak lehet, javasolt az egyes funkciókat plugin nélkül megoldani. A fentiekből következik, hogy most 2 olyan kódrészlet jön majd, amivel kapcsolódó bejegyzéseket lehet kitenni kategória vagy tag-ek alapján.
Kapcsolódó bejegyzések kategória alapján
Először is nyisd meg a theme könyvtárban található single.php fájlt. Keresd meg benne ezt a részt:
1 | <?php the_content() ?> |
és utána illeszd be a template-be az alábbi részletet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <div class="clear"></div> <?php $this_post = $post; $category = get_the_category(); $category = $category[0]; $category = $category->cat_ID; $posts = get_posts('numberposts=6&offset=0&orderby=post_date&order=DESC&category='.$category); $count = 0; foreach ( $posts as $post ) { if ( $post->ID == $this_post->ID || $count == 5) { unset($posts[$count]); }else{ $count ++; } } ?> <?php if ( $posts ) : ?> <div class="related_articles"> <h2>További cikkek e témában:</h2> <ul> <?php foreach ( $posts as $post ) : ?> <li><a href="<?php the_permalink() ?>" title="<?php if ( get_the_title() ){ the_title(); }else{ echo ""; } ?>"><?php if ( get_the_title() ){ the_title(); }else{ echo "Untitled"; } ?></a> (<?php the_time('Y.m.d.') ?>)</li> <?php endforeach // $posts as $post ?> </ul> </div> <?php endif // $posts ?> <?php $post = $this_post; unset($this_post); ?> |
Kapcsolódó bejegyzések tag-ek alapján
A helyzet ugyanaz mint fentebb, csak most az alábbi kódot kell a single.php-ba illeszteni a fenti helyett:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php $tags = wp_get_post_tags($post->ID); if ($tags) { $tag_ids = array(); foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; $args=array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), 'showposts'=>5, // Number of related posts that will be shown. 'caller_get_posts'=>1 ); $my_query = new wp_query($args); if( $my_query->have_posts() ) { echo '<h3>Related Posts</h3><ul>'; while ($my_query->have_posts()) { $my_query->the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php } echo '</ul>'; } } ?> |
Ha ezek megvannak, persze a fájlt menteni kell és feltölteni a szerverre, bár ha a WordPress adminisztrációs felületén az „Appearance / editor” -t használtad, még erre sem lesz szükség.
Mindkét kódrészletben 5-5 kapcsolódó bejegyzés van beállítva, ezt persze át lehet írni.
Ezt kerestem már mióta… :D Köszi^^
Egyszerű, könnyen megvalósítható és nagyszerű! Jobb, mint egy plugin! Köszönet érte!
Ezt CSS-ben hogy tudom szépen formába rázni ? :$ Köszi előre is a választ
A mintakódban van ehhez részlet, pl. div class=”related_articles” . ezen keresztül bármit be lehet formázni, pl. a címsort ilyen módon (CSS-ben): .related_articles h2 {}
Az meg hogy szép legyen, leginkább a Te ízléseden múlik. :)
Helló! Ezt meg lehet valósítani widgetben? Tehát én nem egy legfrissebb bejegyzések widgetet szeretnék, hanem egy olyat amit egy adott kategória összes bejegyzését ki listázza!