En este HowTo vamos a aprender cómo usar campos personalizados (custom fields) en WordPress. Los campos personalizados nos van a permitir incluir información adicional dentro de cada Post o Página que creemos.
Siempre que creamos una Página o Post en WordPress tenemos una serie de campos predefinidos donde se guarda la información. Esta información se guarda en 2 áreas bien diferenciadas:
- El cuerpo del documento que corresponde al contenido del editor.
- La información sobre el contenido como puede ser el título, author, nombre, fecha, etc … A esta información se la conoce también como metadatos.
Los metadatos no siempre son suficientes por lo que es muy probable que necesitemos crear nuevos campos personalizados (custom fields).
Activación de campos personalizados
Por defecto los campos personalizados están desactivados en WordPress, por lo que tendremos que proceder a activarlos. Si estás usando el nuevo editor de bloques, podrás activar los campos personalizados desde el menú de opciones.
En caso de que estés usando el editor clásico, puedes ver en la parte superior de la pantalla un menú llamado «opciones de pantalla»
Una vez hecho esto, si te fijas en la parte inferior podrás ver que ya puedes incluir campos personalizados.
Creación de nuevos campos personalizados
Una tenemos visibles los campos personalizados dentro de nuestros Post o Páginas nos situamos al final de estos para proceder con la creación de nuevos campos personalizados.
Cada campo se compone de un nombre y un valor y será único para cada post o página que estamos creando en ese mismo momento.
Cómo mostrar campos personalizados
Para poder mostrar los campos personalizados que hemos creado, tendremos que editar un poco de código ya sea en nuestros temas o desde el plugin que necesite usarlos.
En nuestro caso vamos a incluir el contenido del campo personalizado en el detalle de los Post. Para ello vamos a editar el fichero single.php que muestra el detalle de cada post. Es probable que nos tengamos fijar si se está usando algún template por lo tenemos que localizar la función get_template_part() para así poder localizar el fichero que muestra la información detallada de cada post.
Una vez tenemos localizada la página que muestra todo el detalle de cada Post, incluimos el siguiente código dentro del bucle while:
1 2 3 4 5 6 |
<?php while ( have_posts() ) : the_post(); // aqui incluiremos el nuevo código endwhile; |
Para poder mostrar información de campos personalizados vamos a usar la función get_post_meta() que puede recibir hasta 3 parámetros:
- El nombre del post o página que contiene el campo personalizado (obligatorio)
- El nombre del campo personalizado (opcional).
- Un campo booleano que en caso de ser true retornará el valor para este campo personalizado y en caso de ser false retorna un array con todos los metadatos. (opcional)
1 2 |
<?php echo get_post_meta($post->ID, 'nombre_del_campo_personalizado', true); |
Recuerda que en el caso de no introducir el campo personalizado get_post_meta() va a retornar un array con todos los campos personalizados definidos para el post.
the_meta()
Otra forma de visualizar todos los metadatos personalizados es usando la función the_meta();
¿Dónde ser guardan los metadatos?
WordPress guarda todos los metadatos en la tabla wp_postmeta, que contiene los siguientes campos:
- meta_id corresponde a un id único del meta dato.
- post_id el identificador del post al que está asociado el metadato.
- meta_key el nombre del campo personalizado.
- meta_value el valor del campo personalizado.
Otras funciones relacionadas con campos personalizados
WordPress nos ofrece otra serie de funciones con las que vamos a poder obtener información de campos personalizados:
- get_post_custom_keys() – nos permite obtener todas las meta key de los campos personalizados.
- get_post_custom_values() – nos permite acceder a los diferentes valores de un metadato que se repite.
- get_post_custom() – retorna un array con todos los metadatos asociados al post o página que se está consultando.
- the_meta() – devuelve una lista con todos los metadatos del post o página.
También podemos incluir, modificar o borrar campos personalizados a través de funciones:
Ejemplo de uso de campos personalizados
Bien sabemos que WordPress no permite incluir coautores a nuestros post. Una de las formas de solucionar esto es a través de un plugin que permita dicha característica o de campos personalizados. Por lo que vamos a crear varios campos personalizados que nos van a permitir incluir varios coautores a nuestros post o páginas.
Vamos a insertar este código donde queremos que se muestren:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $coautores = get_post_meta( $post->ID, 'coautor', false ); $i = count($coautores); if ( $i > 0 ) { ?> <div class="autores"> <strong>Coautores: </strong> <?php $z = 1; foreach( $coautores as $coautor) { echo $coautor; if ($z != $i) { echo ", "; } $z++; } ?></div><?php } |
Visualización de Posts asociados a un campo personalizado
WordPress nos va a permitir visualizar o filtrar todos aquellos post que contengan un determinado campo personalizado. Por lo que si necesitamos crear una página que filtre aquellos post con un determinado campo personalizado podemos usar la clase WP_Query() para consultarlos.
En este caso vamos a filtrar todos los post creados por un determinado coautor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$args = [ 'meta_key' => 'coautor', 'meta_value' => 'Manuel García Martínez' ]; $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); ?><h2><?php the_title(); ?></h2><?php } wp_reset_postdata(); } else { ?><p><?php _e( 'No se encontraron post.', 'text-domain' ); ?></p><?php } |