¿Cómo agregar un campo personalizado a la página de archivo?
¿Agregar campos al archivo?
Estoy usando el plugin Advanced Custom Fields (pero no es relevante ya que también puedo usar campos nativos de WP) y quiero agregar un campo personalizado a la página de archivo de posts personalizados.
El problema es que no hay una página de archivo por defecto donde puedas adjuntar el campo (aunque puedes agregarlo a categorías individuales ya que tienen presencia en el área de administración).
Crear plantilla de página personalizada = sin resaltado en el menú
Una solución sería crear una plantilla de página personalizada para los archivos. Pero de esa manera pierdes la capacidad de resaltarla en la barra de navegación mientras estás en un post/categoría individual, porque esta nueva página no será reconocida como padre del contenido individual.
¿Estoy en lo correcto al pensar que no hay forma de agregar campos al archivo y mantener el resaltado en el menú?
Utilizando el plugin Advanced Custom Fields puedes asignar páginas de opciones a tu tipo de entrada personalizado de esta manera:
if( function_exists('acf_add_options_page') )
{
acf_add_options_page(array(
'page_title' => 'Opciones de YOUR_PAGE_TILE',
'menu_title' => 'Opciones de YOUR_MENU_TITLE',
'menu_slug' => 'options_YOUR_SLUG',
'capability' => 'edit_posts',
'parent_slug' => 'edit.php?post_type=YOUR_CUSTOM_POSTTYPE_SLUG',
'position' => false,
'icon_url' => 'dashicons-images-alt2',
'redirect' => false,
));
}
De esta forma obtienes una página de opciones a la que puedes asignar campos posteriormente. Ten en cuenta que todos los campos que asignes a esa página de opciones no están vinculados a tu tipo de entrada personalizado. Son como campos de opciones "normales" pero los tendrás en la sección de tu tipo de entrada personalizado en el menú del backend de WordPress.
Creo que es necesario usar la versión pro del plugin - o tener el addon instalado para construir páginas de opciones.

Gracias. Añade la opción pero por alguna razón no la muestra en la página real. ¿Recuperas el valor como de costumbre con the_field()
?

Estoy trabajando con plantillas twig pero debería funcionar si lo haces así:
$options= get_fields('option');
y luego obtén el valor con echo $options['YOUR_FIELDNAME']
;

En realidad es the_field('option_name', 'option')
por si a alguien le interesa.

Ambas formas funcionan. Tu solución ahorra recursos, por supuesto. Si tienes un sitio sin tantos valores de opciones, es más agradable asignarlos todos a un array en mi opinión. De esa manera no tienes que repetir la escritura de the_field(..., 'option') todo el tiempo.
