Relaterade poster

Utveckling

Relaterade poster med filter i WordPress

Min blogg rullar på WordPress. Igår lade jag ut en funktion som visar relaterade poster genom att hitta andra poster med samma taggar. Jag valde att visa fyra relaterade inlägg och presentera deras posters tumnaglar/utvalda bilder och titel. Det underlättar för besökaren att navigera och hitta liknande inlägg som kan vara intressanta att läsa vidare. Jag lade också på ett filter som exkluderar taggarna #blogg100 och linkedin. Här visar jag koden.

Relaterade poster

Relaterade poster med filter

#blogg100 använder jag för att kategorisera posterna som görs under #Blogg100-utmaningen och dessa poster behöver nödvändigtvis inte ha något inbördes relaterat. Och linkedin använder jag för att visa utvalda poster i min LinkedIn-profil.

Jag valde att inte använda mig av något plugin såsom Yet Another Related Posts Plugin eller Similar Posts utan lade in koden direkt i mitt tema.

Filen style.css

#RelatedPosts ul { margin-bottom: 20px; list-style:none; }
#RelatedPosts li { width:120px;border:1px solid #ccc;float:left;min-height:150px;margin-left:5px; text-align:center; padding-top:2px; }
#RelatedPosts li:first-child { margin-left:0; }
#RelatedPosts  a { font-size:11px; }
.clear {clear:both;} /* Denna har du troligtvis redan i din style.css-fil */

Filen single.php

Lägg in följande kodsnutt där du vill att de relaterade posterna skall visas.

<?php
$tags = wp_get_post_tags($post->ID);

if ($tags) {
	$tag_ids = array();
	foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;

	$toRemove=array(61,80); // linkedin, #blogg100
	$tag_ids=array_diff($tag_ids, $toRemove);	

	if(count($tag_ids)>0) {
		$args=array(
			'tag__in' => $tag_ids,
			'post__not_in' => array($post->ID),
			'showposts'=>4, // Number of related posts that will be shown.
			'caller_get_posts'=>1
		);
		$my_query = new wp_query($args);
		if( $my_query->have_posts() ) {
			echo '<div id="RelatedPosts"><h4>Relaterat</h4><ul>';
			while ($my_query->have_posts()) {
				$my_query->the_post();
			?>
				<li>
					<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
						<?php if ( has_post_thumbnail() ) { ?>
							<?php the_post_thumbnail(array(116,116)); ?>
						<?php
						} else { 
							
						} ?>
						<?php the_title(); ?>
					</a>
				</li>
				
				
			<?php
			}
			echo '</ul></div><div class="clear"></div>';
			wp_reset_query();
		}
	}
}
?>
  • ID:na för de taggar du vill exkludera lägger du in här:
    $toDelete=array(61,80); // min linkedin-tag har id=61, min #blogg100-tagg har id=80
    Just dina IDn hittar du i din WordPress-setup under menyn Inlägg, Etiketter och så håller du musmarkören över den etikett du vill exkludera, kika på sökvägen så ser du ID:t där i formatet tag_ID=nn.
  • Du kan ange hur många relaterade inlägg som skall visas här:
    ’showposts’=>4, // Antal relaterade poster som skall visas.
  • Och storleken på tumnageln skickar du med här:
    the_post_thumbnail(array(116,116))
  • Filen header.php

    Ändringen i style.css kanske inte slår igenom eftersom filen är cachad på besökarens dator. Då kan man tvinga browsern att ladda in den igen genom att lägga på en request-variabel t.ex. ?v=1. Koden hittar du i header.php.

    <link rel="stylesheet" type="text/css" href="<?php bloginfo('template_directory'); ?>/style.css?v=1" />	
    

    ,

    By  -      


    2 Responses

    1. Jon Täng skriver:

      Hej!
      Jag har gjort en liknande funktion för att visa relaterade poster. Prova den gärna och ge mig lite feedback.
      Du hittar den här: http://wp.me/p38LaD-8u

    2. Jon Täng skriver:

      Visa relaterade poster efter ditt blogginlägg…

      Blev lite inspirerad av ett inlägg på WPtuts+ om relaterade poster, så jag var tvungen att göra en egen funktion för detta. Kopiera och klistra in följande kod i din funktionsfil (functions.php). Testa den och ge mig gärna feedback på funktionen…….

    Kommentera

    E-postadressen publiceras inte. Obligatoriska fält är märkta *