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:

<?php the_content() ?>

és utána illeszd be a template-be az alábbi részletet:

<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:

<?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.

Harder

Harder

Profil

Korábbi hozzászólások (5)

A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.

  1. Zoltán Bolla

    Ezt kerestem már mióta... :D Köszi^^

  2. Barbiwww.webdesign-grafika.hu

    Egyszerű, könnyen megvalósítható és nagyszerű! Jobb, mint egy plugin! Köszönet érte!

  3. csabi

    Ezt CSS-ben hogy tudom szépen formába rázni ? :$ Köszi előre is a választ

    1. Harderszerzőblog.harder.hu

      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. :)

  4. Gábor

    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!

Van hozzáfűznivalód? Írj nekem közvetlenül.

Kapcsolat