Datos del tipo de publicación personalizada


A veces, los campos predeterminados del tipo de contenido personalizado pueden no ser suficientes, y necesitas almacenar datos adicionales en un tipo de contenido personalizado.

Afortunadamente, WordPress admite algo llamado metadatos de las entradas, que te permite almacenar información adicional sobre una entrada.

Veamos cómo puedes usar los metadatos de las entradas en una entrada o en un tipo de contenido personalizado.

Qué son los metadatos de las entradas

Los metadatos de las entradas son una forma de almacenar información adicional sobre una entrada en la base de datos de WordPress.

Los metadatos de las entradas se almacenan en la tabla postmeta como pares clave-valor. Si observas la tabla postmeta en la base de datos de WordPress, verás que tiene cuatro columnas: meta_id, post_id, meta_key y meta_value.

post_id es el ID de la entrada a la que están asociados los metadatos. meta_key es el nombre del campo de metadatos y meta_value es su valor.

Añadir metadatos de entradas

Puedes añadir metadatos a una entrada usando la función add_post_meta. Esta función acepta tres parámetros: el ID de la entrada, el nombre de los metadatos y el valor de los metadatos.

Supongamos que quisieras añadir un campo de metadatos a una entrada con el ID 1 y que quisieras almacenar la ubicación donde se escribió la entrada como London.

Podrías usar el siguiente código:

    add_post_meta( 1, 'location', 'London' );

Hay otras funciones para trabajar con los metadatos de las entradas, como update_post_meta, delete_post_meta y get_post_meta.

Puedes leer más sobre estas funciones y sobre cómo usarlas en plugins en la página de metadatos del manual del desarrollador de plugins.

El panel de campos personalizados

Añadir metadatos de entradas mediante código es una forma de hacerlo, pero también es posible permitir que los administradores del sitio añadan metadatos mediante la interfaz de administración de WordPress.

Una forma de hacerlo es mediante el panel de campos personalizados del tipo de contenido.

Para activar el panel de campos personalizados, primero tendrás que asegurarte de que tu tipo de contenido personalizado admite metadatos.

Para ello, debes añadir o actualizar el argumento supports para incluir la compatibilidad con custom-fields.

Después, al editar un tipo de contenido personalizado, haz clic en el icono de opciones del editor, selecciona Preferencias, haz clic en Paneles y activa el interruptor de Campos personalizados.

Esto actualizará el editor y verás el panel de campos personalizados en la parte inferior de la pantalla.

Aquí puedes añadir un nuevo campo personalizado y darle un nombre y un valor.

Por ejemplo, si quisieras añadir el número ISBN de un libro, podrías añadir un nuevo campo personalizado con el nombre isbn y el valor del número ISBN.

Este panel utiliza la función add_post_meta para añadir los metadatos a la entrada.

Nombres de campos rellenados previamente para el panel de campos personalizados

También es posible rellenar el campo Nombre del panel de campos personalizados con una lista de campos de metadatos predefinidos.

Para ello, debes enlazarte al filtro postmeta_form_keys y añadir los nombres de los campos de metadatos que quieras mostrar en el panel de campos personalizados.

El filtro postmeta_form_keys se ejecuta antes de que se genere el HTML del panel de campos personalizados y recibe dos parámetros: un array de claves de metadatos y el objeto de la entrada.

Si no se definen otras claves, se ejecutará una consulta para obtener las claves de cualquier metadato existente de la entrada.

Por lo tanto, al actualizar el array de claves de metadatos, puedes añadir claves de campos de metadatos al panel de campos personalizados para facilitar a tus usuarios la adición de los metadatos correctos.

Este es un ejemplo de cómo podrías hacerlo:

add_filter( 'postmeta_form_keys', 'bookstore_add_isbn_to_quick_edit', 10, 2 );
function bookstore_add_isbn_to_quick_edit( $keys, $post ) {
    if ( $post->post_type === 'book' ) {
        $keys[] = 'isbn';
    }
    return $keys;
}

Registras una función de callback en el filtro postmeta_form_keys y estableces en 2 el número de argumentos aceptados para aceptar ambos argumentos del filtro.

Después, comprueba si el tipo de la entrada es un libro y, si lo es, añade la opción isbn al array $keys y devuelve ese array.

Si el tipo de contenido es book, añadirá el campo de metadatos isbn al panel de campos personalizados.

Si creas o editas un libro con el panel de campos personalizados activado, verás el campo isbn disponible para añadir metadatos a la entrada.

Metaboxes personalizados

Otra forma de permitir que los administradores del sitio añadan metadatos a las entradas es usar metaboxes personalizados.

Sin embargo, trabajar con metaboxes personalizados también requiere una buena comprensión del desarrollo teniendo en cuenta la seguridad, pero por ahora puedes leer sobre ellos en la página de metaboxes personalizados del manual del desarrollador de plugins.

Aprenderás a trabajar con metaboxes en la ruta de aprendizaje para desarrolladores de plugins.