¡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 con PHP - extensiones, widgets y temas avanzados (teoría, TP, recursos) (2ª edición)
Extractos del libro
WordPress Desarrolle con PHP - extensiones, widgets y temas avanzados (teoría, TP, recursos) (2ª 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 un artículo o una página. Puede encontrar este bloque en la administración, dentro de una página o un artículo. Esta opción está desactivada de forma predeterminada. Para activarla, vaya al menú Preferencias, haciendo clic en el icono con los tres puntos verticales. Luego haga clic en la pestaña Opciones. Aparece una ventana emergente. Posteriormente debe marcar en la sección Paneles adicionales, Campos personalizados. Luego haga clic en el botón Activar y recargar. A continuación, aparece el bloque Campos personalizados en el editor Gutenberg.

images/06pagina_1.png

Página Páginas con la ventana emergente Preferencias

images/06pagina_2.png

Página Páginas con el botón Activar y recargar

images/06pagina_3.png

Página Páginas con el bloque Campos personalizados

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 los usan para vincular una segunda foto o para permitir que las funciones recuperen argumentos. En el caso de los artículos de recetas de cocina, se pueden utilizar para indicar el tiempo de cocción, preparación, etc. Para fichas de clientes, para guardar el nombre, la dirección, etc. Para...

Mostrar los campos personalizados con the_meta()

La función the_meta() muestra todos los campos personalizados cuyo valor se introduce, como una lista con viñetas.

Esta función es práctica, pero puede quedar rápidamente limitada si usa varias extensiones que utilicen estos campos: se podrían mostrar algunos datos cuando no desee. Afortunadamente, algunas extensiones usan los metadatos en su propio bloque.

Considere el siguiente código:

<?php the_meta(); ?> 

Muestra:

<ul class='post-meta'> 
<li><span class='post-meta-key'>el nombre:</span> el valor</li> 
<li>...</li> 
</ul> 

Los nombres de las clases HTML se asignan automáticamente. Inserte su propio código CSS, en el archivo style.css o en un archivo CSS anexo.

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, $value, $unique);...

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...

La extensión ACF (Advanced Custom Fields)

Este complemento de WordPress, desarrollado por Eliott Condon, se encuentra actualmente en la versión 5.8.7, con más de un millón de instalaciones.

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/06pagina_11.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/ei06p10n1.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 Ubicación.

images/06pagina_13.png

Bloque Ubicación 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 checkbox (casilla de verificación)

  • Control de botón de radio

  • Campo de textarea (zona de texto)

  • Campo de lista desplegable

  • Editor WYSIWYG con importación de medios

  • Campo de carga de imágenes

  • Campo de carga...