Horst Scheuer

Technikkram & Internet

Mein Notebook der Marke LincPlus mit Maus und meiner Brille

WordPress Plugin: Postviews for Statify

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 1 Jahr zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

Nachfolgender Code ist nicht neu. Den hatte ich in einem früheren Blog schon mal veröffentlicht. Da er jedoch noch immer aktuell ist, biete ich diese Funktion für WordPress hier erneut an.

Ich nutze schon seit ewigen Zeiten Statify. Mehr Statistik brauche ich hier nicht. Einzig mir fehlt die Anzahl Seitenaufrufe im Dashboard unter „Beiträge“. Das bietet diese Funktion. Einmal installiert, fügt der Code eine weitere Spalte unter „Beiträge“ hinzu, in der die Anzahl Seitenaufrufe zu finden ist.

/**
 * Anzahl Seitenaufrufe unter "Beiträge" im Dashboard
 * --------------------------------------------------
 * Zeigt mit Hilfe des Plugin "Statify" die Anzahl Seitenaufrufe unter
 * "Beiträge" an.
 */

if( in_array( 'statify/statify.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
  
  function add_css_to_wp_dashboard() {
  ?>
    <style>
  .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;
      }
    }
    </style>
  <?php
  }
  add_action( 'admin_head', 'add_css_to_wp_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_views_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_views_column', 5 );
  add_filter( 'manage_pages_columns', 'add_views_column', 5 );

  function display_views_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_views_column', 5, 2 );
  add_action( 'manage_pages_custom_column', 'display_views_column', 5, 2 );
}

Der Code kann in der functions.php eines Child-Themes oder als Plugin genutzt werden.