Contador de visitas para WordPress

Hace un tiempo desarrollé mi propio sistema de conteo de visitas para WordPress, actualmente ya no está implementado en la web, antes de borrarlo, a pesar de su simplicidad he pensado que quizás a alguien le podría ser utilidad.

El funcionamiento del contador de visitas es muy sencillo, a resumidas cuentas, lo que hace es crear una variable interna para cada uno de los artículos de nuestra web. Cada vez que un usuario entra en la web se crea una sesión de usuario temporal para este (así se evita que el contador aumente varias veces si el usuario entra varias veces en el mismo artículo) y finalmente se incrementa la visita.

Importante recalcar que no es un contador de HITS, ni contador de visitas únicas por IP. Es un contador de visitas por SESSION.
Es decir, si un usuario entra 5 veces en un mismo articulo sólo se contara 1 vez, pero, si ese usuario entra dentro de 1 o 2 días, se volverá a contar como 1 visita más.

Ahora bien, para instalarlo, lo primero que debemos hacer es crear la función, para ello en el final del fichero functions.php del tema que tengáis en vuestro WordPress, añadiremos el siguiente código.

<php
add_action('init', 'start_session', 1);
function start_session() {
    if(!session_id()) {
        session_start();
    }
}

function getPostViews($postID, $opc, $singular, $plural){
    $key = 'ito_post_views';
    $visitas = 0;
    $keyValue = get_post_meta($postID, $key, true);
    if($keyValue !== ''){
        $visitas = $keyValue;
    }
    if($opc == 'U'){
        if (!isset($_SESSION['visitedPost'])){
            $_SESSION['visitedPost'] = array();
            array_push($_SESSION['visitedPost'], $postID);
            $visitas ++;
            update_post_meta($postID, $key, $visitas);
        }else{
            if (!in_array($postID, $_SESSION['visitedPost'])){
                $visitas ++;
                update_post_meta($postID, $key, $visitas);
                array_push($_SESSION['visitedPost'], $postID);
            }
        }
    }
    if($visitas == 1){
        echo $visitas . ' ' . $singular;
    }else{
        echo $visitas . ' ' . $plural;
    }
}

add_action( 'getPostViews', 'getPostViews' );
?>

Al principio del archivo single.php de nuestro tema (Que es el encargado de generar la entrada), añadiremos la siguiente línea de código para que vaya aumentando el conteo de visitas cada vez que una persona distinta entre a leer la entrada.

<php getPostViews($post->ID, 'U'); ?>

Una vez llegados a este punto, nuestro WordPress ya esta preparado para contear visitas cada vez que un usuario entre a leer una de nuestras entradas.

Ya solo nos faltaría poder obtener ese número de visitas que tiene cada entrada, para por ejemplo mostrarlo junto al lado del título de las entradas.

<php getPostViews($post->ID, 'C', 'visita', 'visitas'); ?>

Este código nos retornaría el texto 1 visita o 30 visitas, dependiendo del número de visitas que haya. Si por ejemplo, sólo quisieramos que nos retornara el número, es decir, sin incluir el texto visita/visitas, debemos llamar al código del siguiente modo.

<php getPostViews($post->ID, 'C', '', ''); ?>

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada.xdxd

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Create a GDG PL/1

Create a GDG PL/1

Visita a Jaca (Huesca)

Visita a Jaca (Huesca)

Contador de visitas para WordPress

Contador de visitas para WordPress