¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. WordPress
  3. Los campos personalizados
Extrait - WordPress Desarrolle temas avanzados con PHP (teoría, ejercicios prácticos y recursos) (3ª edición)
Extractos del libro
WordPress Desarrolle temas avanzados con PHP (teoría, ejercicios prácticos y recursos) (3ª edición) Volver a la página de compra del libro

Los campos personalizados

¿Qué es un campo personalizado?

Los campos personalizados o metadatos le permiten vincular información a una entrada o una página. Puede encontrar este bloque en la administración, dentro de una página o una entrada. Esta opción está desactivada de forma predeterminada. Para activarla, despliegue el menú haciendo clic en el icono con los tres puntos verticales Opciones. Luego haga clic en Preferencias. Aparece una ventana emergente. Vaya a la sección Avanzado y active la opción Campos personalizados. A continuación, haga clic en el botón Mostrar y recargar página, después aparece el bloque Campos personalizados en el editor Gutenberg.

images/07_001.png

Página Páginas con el menú Opciones desplegado y la pestaña Preferencias donde debe hacer clic para abrir la ventana emergente Preferencias

images/07_002.png

Página Páginas con el botón Mostrar y recargar página que servirá para activar los campos personalizados

images/07_003.png

Página Páginas con la sección Campos personalizados después de activar la opción. La sección nueva se coloca debajo del editor en el cuerpo de la página principal.

La mayoría de las veces, los módulos utilizan los campos personalizados para agregar información adicional al artículo o a la página.

Por ejemplo, algunas presentaciones de diapositivas...

Mostrar los campos personalizados con get_post_meta()

La función get_post_meta() permite ser más concreto a la hora de señalar el campo a recuperar.

<?php get_post_meta($post_id, $key, $unique); ?> 
  • $post_id: identificador del artículo.

  • $key: nombre del campo personalizado.

  • $unique: acepta true o false. Si el valor es true, la función devuelve un resultado simple, como una cadena de caracteres. Por defecto, el valor es false y devuelve una tabla.

Si solo está presente $post_id, la función devuelve una tabla con todos los campos personalizados del artículo en cuestión, en forma de tabla.

Ejemplo

Para un artículo cuyo id es 8 y cuyo campo personalizado tiene el nombre "estado de animo", con el valor "contento", la función a insertar en las plantillas de página para recuperar el valor "contento" es:

estado de animo: <?php echo get_post_meta('8','estado de animo',true); ?> 

Para mostrar este mismo valor, dentro de un bucle el código será el siguiente:

<?php 
$estado de animo = get_post_meta( get_the_ID(), 'estado de animo', true ); 
if ( ! empty( $estado de animo ) ) { 
    echo $estado de animo; 
} 
?> 

Para recuperar la URL de una imagen asignada a un campo "thumb", dentro de un bucle el código será el siguiente:...

Automatizar los campos personalizados con add_post_meta()

Para evitar tener que crear campos personalizados de forma sistemática o evitar tener que abrir la lista desplegable cada vez, puede automatizar la creación de campos cuando se agregue una nueva página o un nuevo artículo, por ejemplo.

En el siguiente ejemplo, agregará un campo personalizado "Introducción" para que pueda agregar una introducción al principio de cada artículo.

Para hacer esto, vaya al archivo functions.php y cree una función campos_automatizados(), que recupere el identificador del artículo con el parámetro $_post_id:

<?php 
function campos_automatizados($post_id){ 
} 
?> 

Luego verifique que está en la página de un artículo, asegurándose de que el valor devuelto por la función get_post_type($post_id) es igual a post. Para una página, comprobará que la función sea igual a page:

<?php 
function campos_automatizados($post_id){ 
   if (get_post_type($post_id) == 'post'){ 
   } 
} 
?> 

Para automatizar la adición de campos, utilizará la función add_post_meta() que acepta, además de los mismos parámetros que la función get_postmeta(), el parámetro $value:

<?php add_post_meta($post_id, $key...

La tabla wp_postmeta

En la base de datos, esta información se guarda en la tabla wp_postmeta. Se compone de cuatro columnas:

  • meta_id: se corresponde con el identificador único de los metadatos.

  • post_id: se corresponde con el identificador único de la página o del artículo que se encuentra en la tabla wp_posts.

  • meta_key: se corresponde con el nombre del campo personalizado.

  • meta_value: se corresponde con el valor del campo personalizado.

Puede realizar consultas SQL más complejas a la base de datos utilizando un join entre las tablas wp_postmeta y wp_posts, para recuperar información relacionada con publicaciones/páginas (ver capítulo WordPress y PHP, sección La clase wpdb y las consultas en formato SQL).

Durante una consultar con el objeto WP_Query, también puede utilizar los argumentos meta_key, meta_value, meta_compare (consulte el capítulo WordPress y PHP - sección Clase WP_Query y consultas del contenido).

La mayor parte de la información vinculada a un artículo o a una página se encuentra en esta tabla y muchas extensiones utilizan este sistema. Por ejemplo, la extensión WooCommerce, que utiliza su propio sistema de bloques, almacena toda la información sobre un producto en esta tabla.

Algunas veces, las extensiones usan su propia tabla para almacenar información o usan la tabla wp_options, aunque esto se usa más...

El plugin ACF (Advanced Custom Fields)

Este plugin de WordPress, desarrollado por WP Engine, se encuentra actualmente en la versión 6.3.3, y se ha instalado más de 2 millones de veces.

Puede descargar la versión gratuita a través del siguiente enlace: https://es.wordpress.org/plugins/advanced-custom-fields o a través de la administración de su sitio, escribiendo en el campo de búsqueda "Advanced custom fields". Vea si el nombre del desarrollador es el mismo que aquí, porque dada la popularidad de esta extensión, muchos otros desarrolladores han utilizado las palabras clave "ACF" o "Advanced custom fields" para hacer referencia a sus propias extensiones.

images/07_005.png

Página de descarga de la extensión en la administración WordPress

El sitio web oficial, así como la documentación para los desarrolladores, se pueden encontrar en la siguiente dirección: https://www.advancedcustomfields.com

images/07_006.png

Sitio oficial de la extensión ACF

ACF (Advanced Custom Fields o campos personalizados avanzados), le permite agregar una amplia variedad de campos personalizados a una página, artículo, tipo de artículo personalizado, plantilla de página, página principal, taxonomía o función. Puede configurar esto en la parte Ajustes.

images/07_007.png

Parte Ajustes de ACF

Además, la extensión es muy intuitiva y fácil de aprender. La documentación (lamentablemente en inglés) es muy detallada y hay muchos tutoriales disponibles en español en la Web.

Estos son los campos que la extensión pone a su disposición:

  • Para la versión gratuita de ACF:

  • Campo de texto básico (input): texto, campos con caracteres limitados, números, correo electrónico, contraseña, etc.

  • Campo Casilla de verificación

  • Campo Botón de radio

  • Campo Área de texto

  • Campo de lista desplegable

  • Editor WYSIWYG

  • Campo de carga de imágenes

  • Campo de carga de archivos

  • Enlace a una entrada

  • Selección de otros artículos...