Horst Scheuer

Mehr als Technik & Internet

WordPress: Anzahl Seitenaufrufe im Dashboard als Beitragsspalte

Heute an dieser Stelle einen Artikel, dem ich vor 4 Jahren schon einmal veröffentlicht habe. Da er aber noch immer aktuell ist, veröffentliche ich ihn erneut.

Ich bin schon seit ewigen Zeiten Nutzer des Plugins Statify und hatte die Idee auf Grundlage dieses Plugins die Seite „Beiträge“ im WordPress Backend um eine Spalte „Anzahl Seitenaufrufe“ zu erweitern. Herausgekommen ist nachfolgendes Snippet.

/**
 * Anzahl Seitenaufrufe unter "Beiträge" im Dashboard
 * --------------------------------------------------
 */
 
function get_views_of_post_from_statify( $link ) {
  global $wpdb;
  
  $results = $wpdb->get_results(
    $wpdb->prepare(
      "SELECT COUNT(`target`) as `count` FROM `$wpdb->statify` WHERE `target` = %s", $link
    ),
    OBJECT
  );
  return $results[0]->count;
}

function add_postviews_column( $columns ) {
  $new_columns = array( 'postviews' =>  __( '<span class="postviews-bubble" title="Aufrufe"> <span class="screen-reader-text">Aufrufe</span></span>' ),  );
  return array_merge( $columns, $new_columns );
}
add_filter( 'manage_posts_columns', 'add_postviews_column', 5 );

function display_postviews_column( $column_name ) {
  switch( $column_name ) {
    case 'postviews':
    echo get_views_of_post_from_statify( str_replace( home_url(), '', get_permalink() ) );
  }
}
add_action( 'manage_posts_custom_column', 'display_postviews_column', 5, 2 );

Die Funktion ermittelt die Anzahl Seitenaufrufe aus der Datenbanktabelle wp_statify, die vom Plugin Statify angelegt wird und erzeugt eine neue Spalte auf der Seite „Beiträge“. Meine Funktion überprüft nicht, ob das Plugin installiert, oder die Datenbanktabelle vorhanden ist.

Damit die erzeugte Spalte optisch zum Rest passt wird noch nachfolgendes CSS benötigt.

/**
 * Anzahl Seitenaufrufe unter "Beiträge" im Dashboard
 * --------------------------------------------------
 */

.fixed .column-postviews {
  width: 3.5em;
  padding: 8px 8px;
  text-align: right;
}

th .postviews-bubble:before {
  content: "\f185";
  font: normal 20px/.5 dashicons;
  speak: never;
  display: inline-block;
  padding: 0;
  top: 4px;
  left: 4px;
  position: relative;
  vertical-align: top;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-decoration: none!important;
  color: #3c434a;
}

@media screen and (max-width: 782px) {
  .fixed .column-postviews {
    text-align: left;
  }
} 

Hinweis: So ein ähnliches Snippet hatte ich schon mal veröffentlicht. Das jetzt veröffentlichte ist eine verbesserte Version.

Schreibe einen Kommentar

Hier werden neben dem Kommentar nur der Zeitpunkt der Erstellung des Kommentars, der Nutzername und die Mail-Adresse gespeichert. Enthält der Text ein Link wird der Kommentar moderiert. Erforderliche Felder sind mit * markiert.