Potencia tu web con una columna personalizada en WordPress

Hoy vamos a enseñarte cómo crear una columna personalizada en WordPress que puedes ordenar fácilmente. Esto es súper útil para los administradores, especialmente si necesitan ordenar sus entradas según un valor específico.

Antes de empezar, debemos agregar algunos códigos al archivo functions.php en la carpeta child-template. Así que asegúrate de tener acceso a esa carpeta.

En nuestro ejemplo, vamos añadir una columna que muestre el número de vistas de cada entrada en el backend de WordPress. Este enfoque es mucho mejor que instalar un plugin completo para tal detalle, ya que los plugins pueden afectar la velocidad de tu web y muchas veces incluyen características adicionales que no necesitas.

Si solo necesitas una personalización parcial o una pequeña funcionalidad adicional en tu web actual, te recomendamos escribir tu propio código en lugar de instalar un plugin.

¡Bueno, empecemos! Primero, debemos registrar una nueva columna personalizada.

Si quieres saber como se crea una columna personalizada en WordPress , te invito a que sigas leyendo👇

Registra una columna

Vamos a añadir la columna ‘post_views’ con el título ‘Views’, para ver el número de vistas de nuestras entradas del blog.

Aquí está cómo lo hacemos:

function views_columns( $columns )
{
    $columns['post_views'] = __('Views');
    return $columns;
}

Rellena la columna con datos

Tenemos que añadir el contenido para la columna, en nuestro caso los datos serán los meta datos del post: ‘post_views_count’:

function views_data_columns( $column, $post_id )
{
    if($column === 'post_views'){
        echo get_post_meta($post_id, 'post_views_count', true);
    }
}

Hemos almacenado las vistas de los puestos como meta de los mismos, pero sus columnas pueden ser rellenadas con otros datos.

Hacer que una columna sea clasificable

Ahora registramos nuestra columna personalizada como “clasificable”.

function set_sortable_views( $columns )
{
    $columns['post_views']  = 'post_views';
    return $columns;
}

Ordenar los datos

Sin embargo, para que la ordenación funcione, necesitamos crear una función que llame a la base de datos para enviar los datos en forma ordenada.

Si queremos ordenar por un valor meta, o por alguna otra forma que WordPress no entienda automáticamente hay que decirle a qué se refiere ordenando por ‘post_views_count’.

function sort_views_column_query( $query )
{
    $orderby = $query->get( 'orderby' );
    if ( 'post_views' == $orderby ) {

        $meta_query = array(
            'relation' => 'OR',
            array(
                'key' => 'post_views_count',
                'compare' => 'NOT EXISTS', 
            ),
            array(
                'key' => 'post_views_count',
            ),
        );
        $query->set( 'meta_query', $meta_query );
        $query->set( 'orderby', 'meta_value_num' );
    }
}

El filtro pasa un array con los nombres de las columnas ordenables como claves, y lo que hay que ordenar como valor. Más concretamente, los valores dictan cómo se establece el parámetro orderby en la consulta que rellena la tabla. Le dice a WordPress que ordene numéricamente por el valor del meta post_views_count. Si quieres ordenar el valor alfabéticamente, utiliza meta_value en lugar de meta_value_num.

Filtros y acciones de llamada

Y, por último, añadir las llamadas a esos métodos.

Para decirle a WordPress qué columnas quiere registrar como ordenables con su función, necesitas usar este filtro:

manage_{$screen->id}_sortable_column

Para las entradas y las páginas, $screen->id es ‘post‘ y‘page‘ respectivamente. En general, para un tipo de puesto con nombre ‘mi-tipo-de-puesto‘, es ‘mi-tipo-de-puesto‘.

// Add new column
 add_filter( 'manage_post_posts_columns', 'views_columns' );

// Make column sortable
 add_filter( 'manage_edit-post_sortable_columns', 'set_sortable_views' );

// Populate column cells
 add_action( 'manage_post_posts_custom_column', 'views_data_columns', 10, 2 );

// Set query to sort
 add_action( 'pre_get_posts', 'sort_views_column_query' );

Puedes utilizar estas funciones y filtros para añadir una nueva columna al backend de WordPress para cualquier post_type, nuevo o existente.

Número de visitas del artículo del blog de WordPress

Si también quieres mostrar el número de vistas de las entradas en el backend, como en el ejemplo, todavía tendrás que añadir nuevos metadatos.

Te mostraremos rápidamente cómo hacerlo, es sólo una función:

Crear nuevos meta_datos

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);
   }
}

Y entonces tendrás que llamar a esta función en cada artículo, por lo que necesitas para editar single.php archivo. Si no lo tienes en la carpeta del tema hijo, cópialo de la carpeta del tema padre y edítalo en la carpeta del tema hijo.

Así que añade esta parte de código a tu archivo single.php, puedes ponerlo en las primeras líneas, justo después de <?php

if( !current_user_can('editor') || !current_user_can('administrator') ) {
    setPostViews(get_the_ID());
}

Como puedes ver he utilizado un código y registro de la vista del post sólo si el usuario que está viendo el artículo no es Administrador de la web o Editor de la web, con este enfoque puedes eliminar las vistas de los miembros de tu equipo, y obtener números más precisos.

Por supuesto, de esta forma obtenemos cifras muy aproximadas, que no se ajustan a los bots, se podría conseguir una mejora aplicando otra condición, es decir, registrando las visualizaciones sólo de los usuarios que pasaron más de 10 segundos en la página, por ejemplo.

Conclusión

¡Increíble! Ahora que has aprendido a crear una columna personalizada en WordPress, puedes mejorar la funcionalidad de tu web y hacer que la experiencia de usuario sea aún mejor. La capacidad de ordenar entradas según un valor específico y ver datos importantes directamente en el backend puede marcar la diferencia en el rendimiento de tu web.

Recuerda que, en lugar de instalar un plugin completo, siempre es mejor escribir tu propio código para una personalización parcial o una funcionalidad adicional. ¡Así que a ponerse manos a la obra y potencia tu web con una columna personalizada en WordPress!

¿Necesitas a los mejores expertos en desarrollo web? Contacta con nosotros.

Carmen Marín
Redactora

¡Contactenos ahora!

Estamos a su entera disposición para analizar, definir, diseñar, y programar completamente su sitio web para contribuir a dar una imagen profesional a su empresa.

Contrata nuestros expertos si necesitas la máxima calidad posible para la presentación de su empresa en Internet. ¡Contactenos ahora!

1 Que vamos a crear

Si deseas ser contactado por teléfono, 

por favor asegúrate de que tu número de teléfono esté completo.

keyboard_arrow_leftVolver
siguientekeyboard_arrow_right

Conoce nuestro equipo

¡Diseño y desarrollo web a medida!

Déjanos tu correo electrónico y nosotros te contactaremos.

Fácil, rápido, eficaz.