• Saltar a la navegación principal
  • Saltar al contenido principal

Dani Sánchez - Gestionatuweb

Desarrollador web freelance

  • Quién soy
  • ¿Eres agencia?
  • WordPress
    • Mantenimiento WordPress
    • Desarrollo WordPress
    • Soporte técnico WordPress
  • Cursos
  • Blog
  • Portfolio
  • Solicita Presupuesto

Personalizar las columnas del listado de entradas en WordPress

El 28 de agosto de 2019 por dani 4 comentarios

Aviso: Esta entrada tiene 2 o más años, es posible que el método difiera ligeramente, las capturas de pantalla no se correspondan con la versión actual o que la herramienta/complemento ya no esté disponible.
Advertencia: Esta entrada contiene códigos o snippets que podrían no funcionar correctamente en tu instalación de WordPress, o podrían ser incompatibles con tu theme o plugins activos. Úsalos bajo tu responsabilidad, preferiblemente en un entorno de desarrollo y haz siempre copias de tus archivos antes de modificarlos.

Si accedemos al listado de entradas o de un custom post de WordPress, veremos que por defecto aparecen una serie de columnas con información útil sobre el contenido:

En nuestro caso y continuando con la serie de ejercicios anteriores en la que creamos un custom post para guardar vehículos, las columnas que aparecen por defecto son el título, el autor y las taxonomías que creamos: Tipo de Vehículo y Extras).

Estas taxonomías aparecen como columnas porque al definirlas especificamos el argumento:

'show_admin_column' => true

Lo que hace que lo muestre en la columna del administrador. Si no queremos que aparezca solo tenemos que cambiar el valor a «false».

En este artículo veremos cómo añadir nuestras propias columnas para mostrar por ejemplo, el precio y la matrícula que tenemos guardados en campos personalizados.

Para ello vamos a hacer uso del filtro ‘manage_edit-nombre-del-custom-post_columns’ y el action ‘manage_nombre-del-custom-post_posts_custom_column’.

1. Especificamos las columnas con el filtro manage_edit-xxxx_columns

function columnas_post_type_vehiculos($columnas){
    $columnas = array(
        'cb' => '<input type="checkbox" />',
        'title' => 'Título',
        'matricula' => 'Matrícula',
        'precio' => 'Precio',   
    );
    return $columnas;
}
add_filter('manage_edit-vehiculos_columns', 'columnas_post_type_vehiculos') ;

Analizando el código, estamos haciendo referencia a las columnas del tipo de post «vehiculos».

Hemos especificado que aparezca:

  1. El checkbox para poder seleccionar el post y realizar acciones en lote con él.
  2. El título del post.
  3. La matricula.
  4. El precio.

Si nos fijamos en los elementos matrícula y precio, el primer valor es la variable que tenemos que especificar sin caracteres especiales, el segundo valor es la etiqueta o nombre que aparecerá en la columna.

Ahora tenemos que especificar de donde tomar los datos para cada columna.

2. Tomar los datos para cada columna

function filas_post_type_vehiculos($columna, $post_id){
    global $post;
    switch($columna){
        case 'matricula':
            $matricula = get_post_meta($post_id, 'matricula', true);
            the_field('matricula');
            break;          
        case 'precio':
            $precio = get_post_meta($post_id, 'precio', true);
            the_field('precio');
            break;     
        
        default :
            break;
    }
}
add_action('manage_vehiculos_posts_custom_column', 'filas_post_type_vehiculos', 2, 10);

Recorremos con un switch columna tras columna y obtenemos su valor con la función the_field() de advanced custom field que es donde tenemos el valor guardado.

En este ejemplo solo aparecerán las columnas, título, matrícula y precio:

Si queremos que también aparezcan las demás columnas (autor, tipo de vehículo y extras, tenemos que definirlas:

function columnas_post_type_vehiculos($columnas){
    $columnas = array(
        'cb' => '<input type="checkbox" />',
        'title' => 'Título',
        'matricula' => 'Matrícula',
        'precio' => 'Precio',  
        'tipo_vehiculo' => 'Tipo de Vehículo',
        'extras' => 'Extras',
        'author' => 'Autor',
    );
    return $columnas;
}
add_filter('manage_edit-vehiculos_columns', 'columnas_post_type_vehiculos');
function filas_post_type_vehiculos($columna, $post_id){
    global $post;
    switch($columna){
        case 'matricula':
            $matricula = get_post_meta($post_id, 'matricula', true);
            the_field('matricula');
            break;  
        case 'precio':
            $precio = get_post_meta($post_id, 'precio', true);
            the_field('precio');
            break;
        case 'tipo_vehiculo':
	    //consultar qué taxonomías hay marcadas
	    $terms = get_the_terms( $post->ID , 'tipo-vehiculo' );
	    if($terms != null){
		foreach( $terms as $term ) {
		    echo $term->name . " ";
		    unset($term);
		}
            }
            break;
        case 'extras':
	    //consultar extras
	    $terms = get_the_terms( $post->ID , 'extras' );
	    if($terms != null){
	        foreach( $terms as $term ) {
		    echo $term->name . " ";
		    unset($term);
		}
	    }
            break;
        default :
            break;
    }
}
add_action('manage_vehiculos_posts_custom_column', 'filas_post_type_vehiculos', 2, 10);

Consideraciones

Hay que tener precaución en cómo llamar a los filtros y acciones de forma que no cometamos errores.

En el add_filter y add_action, modifica únicamente el nombre de tu custom post:

manage_vehiculos_posts_custom_column
manage_animales_posts_custom_column
manage_casas_posts_custom_column

Espero que este artículo te haya sido de interés y puedas utilizarlo en tus proyectos. Seguro que a tus clientes les viene bien tener información a mano de sus contenidos sin necesidad de entrar al post.

Archivado en: Publicaciones, Tutoriales, WordPress Etiquetado como: custom post, desarrollo web, snippets, taxonomías, tutoriales, wordpress

Interacciones con los lectores

Comentarios

  1. Estebam dice

    8 de octubre de 2020 a las 17:37

    Hola muy interesante tu articulo, una pregunta también serviría si solo escribo solo : the_field(‘matricula’);para mostrar el valor del campo en lugar de escribir estas dos lineas:
    $matricula = get_post_meta($post_id, ‘matricula’, true);
    the_field(‘matricula’);

    Lo probé y funciono pero quisiera saber tu opinión por favor,
    Gracias

    Responder
    • dani dice

      9 de octubre de 2020 a las 10:28

      Efectivamente Esteban, al usar ACF podemos llamar directamente a the_field() para mostrar el campo.

      La otra linea lo guarda en $matricula, por si quieres hacer un «echo $matricula».

      Pero es lo mismo, gracias por la observación.

      Responder
  2. Leonard dice

    27 de septiembre de 2019 a las 13:32

    Hola Daniel soy uno que ha aprendido mucho de tus tutoriales . Tengo una consulta que no puedo solucionar . Tengo una web de anuncios clasificados y en el formulario para subirl las fotos , en el momento que subo las fotos me aparece la url . Y esto en mobil pasa que mostra solo la url y la foto no se ve . Hay alguna funcion o código html simplemente que oculte la url

    Responder
    • Daniel, Gestionatuweb.net dice

      30 de septiembre de 2019 a las 09:39

      Hola Leonard, si te devuelve la URL tendrías que tomarla y hacer un img src=»url_de_imagen» para mostrarla. Inténtalo.
      Edito: No me deja poner etiquetas HTML en el comentario, pero espero captes la idea.

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad

Hosting recomendado

Raiola Networks

Autor

Dani Sánchez
Dani Sánchez
@danisanchez82

Entradas recientes

  • Optimizar el archivo de configuración de WordPress (wp-config.php)
  • ¿Qué plugins tengo instalados en mi web en 2022?
  • Tu alojamiento web no es compatible con la rotación de imágenes. [Solución]
  • Instalar LAMP en Manjaro (Linux, Apache, MySQL y PHP)
  • Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora 34

Comentarios recientes

  1. Armando en Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora 34
  2. Vito en Configurar en español los campos tipo fecha (date) en Ninja Forms
  3. Manel en Calcular rutas con OpenStreetMap partiendo de la geolocalización del usuario
  4. Leo en Modificar textos predefinidos de WordPress sin editar la traducción
  5. Alejo en Instalar LAMP en Manjaro (Linux, Apache, MySQL y PHP)

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress

Divi 20% descuento

Hosting Recomendado

Raiola Networks
Banner

Sitios web corporativos, blogs y tiendas online cuidando hasta el mínimo detalle

Si deseas proponerme un proyecto web ponte en contacto conmigo.

Contacto

Gestionatuweb © 2022 · Desarrollado con Genesis · Acceder
Política de privacidad · Política de cookies

En Gestionatuweb.net utilizamos cookies técnicas para el correcto funcionamiento del sitio. Además, utilizamos cookies para obtener datos estadísticos sobre el uso de la web, con el fin de mejorar la experiencia de navegación y conocer qué contenidos son los más consultados. Otras cookies son usadas para servicios adicionales, como conexión con redes sociales, marketing o mostrar publicidad acorde a tus gustos. Puedes desactivar todas las cookies (excepto las técnicas) pulsando en Rechazar, o elegir qué cookies admites y cuales no en el botón de Preferencias. Más información sobre las cookies que utilizamos en nuestra: Política de cookies.

Gestor de cookies:  GDPR Cookie Compliance
Resumen de uso de cookies

En Gestionatuweb.net utilizamos cookies técnicas para el correcto funcionamiento del sitio. Además, utilizamos cookies para obtener datos estadísticos sobre el uso de la web, con el fin de mejorar la experiencia de navegación y conocer qué contenidos son los más consultados. Otras cookies son usadas para servicios adicionales, como conexión con redes sociales, marketing o mostrar publicidad acorde con tus intereses. Puedes desactivar todas las cookies (excepto las técnicas) pulsando en Rechazar, o elegir qué cookies admites y cuales no en el botón de Preferencias.

Cookies técnicas (necesarias)

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies. Estas cookies son:

  • moove_gdpr_popup: Comprueba si debe mostrar o no el aviso de cookies (si ya ha sido aceptado o rechazado no se vuelve a mostrar mientras persista esta cookie). Expira en 1 año.
  • cpnb_cookiesSettings: Comprueba qué categorías de cookies se aceptan o rechazan (por ejemplo, cookies analíticas, cookies de publicidad dirigida, etc.). Expira en 1 año.
  • _GRECAPTCHA: Esta web utiliza el servicio reCAPTCHA para fortalecer la seguridad en los formularios y evitar el envío masivo de SPAM. reCAPTCHA utiliza esta cookie necesaria para realizar su análisis de riesgo. Expira en 6 meses.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de analítica

Utilizamos Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares. Dejando estas cookies activas nos permite mejorar nuestra web.

  • _ga: Analítica de Google. Se usa para distinguir a los usuarios. Expira en 2 años.
  • _gid: Se usa para distinguir a los usuarios. Expira en 24 horas.
  • _gat: Se usa para limitar el porcentaje de solicitudes. Expira en 1 minuto.

¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!

Cookies de publicidad

Utilizamos Google Adsense para mostrar publicidad en los artículos del blog acordes a tus intereses. Esta publicidad nos ayuda al mantenimiento del sitio web y del tiempo dedicado a la redacción del blog.

  • _gads: Publicidad de Google Adsense. Proporciona la publicación de anuncios de interés para el usuario. Expira en 13 meses.

¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!

Política de cookies

Más información sobre nuestra política de cookies