26. WordPress: Meest populaire artikels weergeven zonder plugin.

Populaire artikelen laten weergeven aan de hand van een plugin is veel te gemakkelijk voor ons, het is leuker om dit zelf te implementeren in de theme. Dat is de manier om WordPress een beetje beter te leren begrijpen en tegelijkertijd zorgen we ervoor dat onze website niet trager begint te werken door al die plugins die we gebruiken.

Ik heb zelf even gezocht en uitgetest en ik ben op twee opties gekomen om de meest populaire artikels te laten tonen op de site. Let er wel op dat dit steeds op basis is van het aantal reacties op een bericht. Heb je geen reacties, dan zal je ook geen resultaten zien.

Optie 1: Met het aantal reacties erbij

Open functions.php en voeg er volgende lijntjes code aan toe:


<?php
function most_popular_posts($no_posts = 10, $before = '<li>', $after = '</li>', $show_pass_post = false, $duration='') {
global $wpdb;
$request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments";
$request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'";
if(!$show_pass_post) $request .= " AND post_password =''";
if($duration !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
}
$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
$posts = $wpdb->get_results($request);
$output = '';
if ($posts) {
foreach ($posts as $post) {
$post_title = stripslashes($post->post_title);
$comment_count = $post->comment_count;
$permalink = get_permalink($post->ID);
$output .= $before . '<a href="' . $permalink . '" title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;
}
} else {
$output .= $before . "None found" . $after;
}
echo $output;
}
?>

Verander $no_posts = 10 naar bijvoorbeeld $no_posts = 5 om het aantal weer te geven artikels te veranderen.

Ga nu naar de sidebar.php en zorg dat je ergens tussen de <ul> en </ul> tags volgende code toevoegt:


<li><h2>Populaire berichten:</h2>
<ul><?php most_popular_posts(); ?></ul>
</li>

Optie 2: zonder het aantal reacties erbij.

We kunnen dit makkelijk realiseren door slechts 1 bestand aan te passen, namelijk sidebar.php
Zorg er opnieuw voor dat je tussen de <ul> en </ul> tags deze code toevoegt:


<li><h2>Populaire berichten:</h2>
<?php
$now = gmdate("Y-m-d H:i:s",time());
$lastmonth = gmdate("Y-m-d H:i:s",gmmktime(date("H"), date("i"), date("s"), date("m")-12,date("d"),date("Y")));
$popularposts = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'stammy' FROM $wpdb->posts, $wpdb->comments WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish' AND post_date < '$now' AND post_date > '$lastmonth' AND comment_status = 'open' GROUP BY $wpdb->comments.comment_post_ID ORDER BY stammy DESC LIMIT 10";
$posts = $wpdb->get_results($popularposts);
$popular = '';
if($posts){
foreach($posts as $post){
$post_title = stripslashes($post->post_title);
$guid = get_permalink($post->ID);
$popular .= '<li><a href="'.$guid.'" title="'.$post_title.'">'.$post_title.'</a></li>';
}
}echo $popular;
?>
</li>

En klaar! Om het aantal weer te geven artikelen te wijzigingen kan je “DESC LIMIT 10” veranderen naar bijvoorbeeld “DESC LIMIT 5”.

Meestal is het gewoon goed zoeken om een uitbreiding op je WordPress site te vinden. De WordPress community is zeer groot en dus zijn er al snel enkele knappe designers die reeds hetzelfde wilden realiseren en er een oplossing voor hebben geplaatst.

Het volgende hoofdstuk is ietwat gerelateerd, we gaan leren hoe we gerelateerde artikels kunnen bovenhalen, zowel met als zonder plugin.

Wordpress theme maken of toch kopen?

Een Wordpress theme maken vergt veel werk, al is wat extra kennis altijd welkom. We maken zelf geen sites meer maar gebruiken nu de themes die terug te vinden zijn op: Theme Junkie. theme junkie Je kan op hun website ook gratis Wordpress themes terugvinden en downloaden!

Deze website gebruikt cookies om jou de beste ervaring te kunnen geven. Door deze website te gebruiken ga je hiermee akkoord. Meer info

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close