WordPress: Artikelinfos Wie Views, Update-Infos Und Gesamtzahl Von Shares In Ein Widget Packen

Für den Fall, dass das Wet­ter über­raschen­der­weise bald novem­ber­mäßig wird, hier auf die Schnelle mal ein Tipp, wie man ein paar Artike­lin­for­ma­tio­nen in ein Side­bar-Wid­get pack­en kann. Es geht hier um drei Infor­ma­tio­nen, die man tra­di­tionell entwed­er unter den Artikel oder in den Meta-Infor­ma­tio­nen platzieren würde.

Die Anzeige der 3 Infor­ma­tio­nen ist nur in der Artike­lan­sicht sin­nvoll, da sich die Auswer­tung ja auch nur darauf beziehen. Man benötigt also entwed­er ein Plu­g­in zur Steuerung der Anzeige des Wid­gets (z.B. Wid­get-Log­ic) oder regelt das, wie im Beispiel mit etwas PHP-Code.

1.) Anzahl der Aufrufe eines Artikels (Views)
2.) Wann wurde der Artikel zulet­zt geän­dert (Update)
3.) Wie oft wurde der Artikel geteilt (Twit­ter, Face­book, Google+)

Zuerst braucht man ein PHP-fähiges Wid­get. Ich nutze im Back­end den Edi­tor “WP Edit Pro”, der auch diese Möglichkeit vorhält. Es gibt im Netz Codestückchen, die Wid­gets PHP-fähig machen. Diese kön­nte man ggf. via Tool­box von Sergej Müller in Gang set­zen.

Zunächst also der Code für ein Wid­get, den man dort ein­fach ein­fügt (CSS H4 muss dem Theme entsprechend angepasst wer­den).

<?php if ( is_single() ) { ?> <h4 class="widget-title">Artikelinfo</h4>Dieser Artikel wurde bereits <?php setPostViews(get_the_ID()); echo getPostViews(get_the_ID())-1;?> mal gelesen.
<br />
Letzte Änderung des Beitrages am:
<!-- START DISPLAY UPDATE INFO -->
<?php if(strtotime($post->post_modified) - strtotime($post->post_date) > 86400)
echo "" ;
the_modified_date('j.m.y');?>
<!-- END DISPLAY UPDATE INFO --><br />
Insgesamt wurde dieser Beitrag <?php echo do_shortcode('[totalshares] '); ?> mal geteilt.

<?php }?>

So sieht der Code für die Ermit­tlung der Gesam­tan­zahl der Shares aus:

function getTotalShares($atts) {
extract(shortcode_atts(array(
'cache' => '3600',
'url' => 0,
'f' => 0,
'bgcolor' => '#ffffff',
'bordercolor' => '#ffffff',
'borderwidth' => '0',
'bordertype' => 'solid',
'fontcolor' => '#7fc04c',
'fontsize' => '55',
'fontweight' => 'normal',
'padding' => '1'
), $atts));

$shareHash = "$cache.$url.$f.$bgcolor.$bordercolor.$borderwidth.$bordertype.$fontcolor.$fontsize.$fontweight.$padding";
$totalShareRecord = 'totalshares_' . $shareHash;
$cachedposts = get_transient($totalShareRecord);
if ($cachedposts !== false) {
return $cachedposts;

} else {

if (!$url) $url = get_permalink($post->ID);

$json = file_get_contents("http://api.sharedcount.com/?url=" . rawurlencode($url));
$counts = json_decode($json, true);
$return = $counts['Twitter'] + $counts['Facebook']['total_count'] + $counts['GooglePlusOne'];
if ($f) $return = '
' . $return . '';
set_transient($totalShareRecord, $return, $cache);
return $return;
}
}
add_shortcode('totalshares','getTotalShares');

Hier noch der Code für die Views (eben­falls z.B. ein­set­zen über die Tool­box von Sergej Müller):

// function to count views.
function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
}else{
$count++;
update_post_meta($postID, $count_key, $count);
}
}

// function to display number of posts.
function getPostViews($postID){
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0 ";
}
return $count.' ';
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.