Kapcsolódó bejegyzések megjelenítése WordPress-ben

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.

Hugyecz Görgy (Harder)
20+ éve munkám és hobbim is az online világhoz köt. Az utóbbi 10+ évben leginkább keresőopimalizálás (SEO) témában tevékenykedem, mellette pedig Google Ads és Facebook PPC fronton is segítem ügyfeleimet. Korábban 10+ évig webgrafika, sitebuild, weboldal készítés témakörben mozogtam.

5 HOZZÁSZÓLÁS

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

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

  3. 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!

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét