Es habitual que algunos proyectos tengan diseños muy específicos para las plantillas de archives para los que necesitaremos a veces crear campos personalizados. Pero ¿Dónde mostramos los campos en el administrador de WordPress para estos valores? Después de darle al coco un tiempo he llegado a una solución que considero bastante «elegante» y consiste en:
- Crear una subpágina en el menú administrador de WordPress.
- Identificar dicha subpágina como «página de opciones» de ACF.
- Crear los campos en ACF y especificar la página de opciones del punto 2.
Ejemplo
Para mostrar el código de los 3 pasos detallados anteriormente vamos a crear una solicitud de un proyecto de ejemplo:
- Tenemos una web y una de sus páginas muestra el listado (archive) de empleados.
- El cliente nos solicita agregar un texto descriptivo al listado de empleados.
- Nos solicita también la posibilidad de cargar una imagen que irá cambiando año tras año.

Solución
Si bien ACF nos permite crear páginas de opciones, las mismas las agrega al nivel cero del menú del administrador de WordPress. Es una opción válida aunque sería más interesante que dicha página esté bajo el menú del propio Custom Post Type, tal vez con el título de «Opciones». Vamos a ver paso a paso el código para implementar esta funcionalidad.
Crear la subpágina en el menú del Custom Post Type
ACF proporciona una función llamada acf_add_options_sub_page que nos permite crear una subpágina que podremos utilizar para agregarlos los campos utilizando este plugin.
<?php
// Create a submenu for the Archive Employee Options
if( function_exists('acf_add_options_sub_page') ) {
acf_add_options_sub_page(array(
'title' => __('Opciones'),
'parent' => 'edit.php?post_type=employee',
'capability' => 'manage_options'
));
}
Esto nos dará como resultado el siguiente submenú y a su vez estará disponible en el plugin de ACF como una nueva página de opciones para agregar campos.

Crear los campos con ACF
Una vez que ya tenemos creada la subpágina ya podremos dar de alta los campos y asignarlos a la página de opciones 'opciones'
.

Resultado final
Como resultado final tendremos una página de opciones propiamente para este Custom Post Type. De esta manera el usuario no tendrá que estar saltando entre distintas secciones del administrador de WordPress para cargar los valores de una misma entidad ¿A que mola?

Mostrar los campos en el Frontend
Un punto muy importante a saber es que estos valores van a guardarse en la tabla wp_options de WordPress. Podemos recuperarlos utilizando la función propia de WordPress get_option()
o bien utilizando la función de ACF get_field()
/ the_field()
.
<php
// ALTERNATIVAS PARA RECUPERAR LOS VALORES
// Opción por defecto de WordPress
echo get_option('texto_descriptivo');
// Con la función get_field de ACF
$variable = get_field('texto_descriptivo', 'option');
/* Es obligatorio especificar el segundo parámetro
con el valor 'option'. De esta manera estamos especificando
a ACF que debe buscar ese valor en la tabla wp_options.
*/
// Con la función the_field de ACF (que hace un echo del valor)
the_field('texto_descriptivo', 'option')
/* Es obligatorio especificar el segundo parámetro
con el valor 'option'. De esta manera estamos especificando
a ACF que debe buscar ese valor en la tabla wp_options.
*/
Mario Jose
Bárbaro!
Excelente y muchas gracias.
Slds
marcos
Genial! gracias
Pablo López
Una solución muy elegante y muy intuitiva para el usuario final!
Mauricio Gelves
¡Gracias Pablet!