¿Hay alguna manera (además de agregar un enlace personalizado) para agregar un archivo de tipo de publicación personalizado a un menú en WordPress? Si se agrega utilizando un enlace personalizado (por ejemplo, / cpt-archive-slug /), WordPress no aplica clases como current-menu-item
al elemento de la lista, lo que presenta desafíos al diseñar el menú.
Si el enlace personalizado contiene la URL completa (por ejemplo, http://site.com/cpt-archive-slug/ ), se agregarán esas clases. Sin embargo, eso probablemente no sea una 'mejor práctica'.
fuente
He ampliado un poco la respuesta de tungd para proporcionar más genérico con ese enfoque. Esta implementación permite agregar asignaciones arbitrarias entre las 'macros' del menú y las URL internas de Wordpress que solo el backend conoce.
También he decidido usarlo
!
como prefijo para estas macros para evitar que entren en conflicto con anclas con nombre; esto incluye una sobrecarga para quitar el 'http: //' de la URL del enlace (ya que Wordpress intentará normalizar estos enlaces extraños) . Si esa implementación te molesta, siempre puedes eliminar lapreg_replace()
llamada y usarla#
como prefijo de enlace como antes.fuente
Puede crear una página y luego aplicarle una plantilla de archivo personalizada. Creo y uso archive- {post-type} .php para el nombre de la plantilla como lo haría para el archivo predeterminado, simplemente lo aplico manualmente a la página.
Si hace esto, le recomiendo configurar su CPT en has_archive = 'false' para evitar colisiones de enlaces permanentes, independientemente de que solo se asegure de que su página tenga un enlace de enlace permanente diferente al que está configurado en su archivo de archivo CPT.
fuente
Me encontré con el mismo problema exacto y encontré esta solución:
Fuente: http://www.wptavern.com/forum/plugins-hacks/2169-current-page-custom-post-type-archive.html
fuente
Creo que tendría que crear un nuevo tipo de mensaje "principal", por lo que el tipo de mensaje personalizado que quiero mostrar se convierte en un "elemento secundario", y ese elemento primario aparecerá en el menú.
Esto debería ser una opción. Crear un padre ficticio solo para que aparezca en el menú es demasiado trabajo.
Me gustaría una manera de hacerlo desde la plantilla, o funciones, para no tener que hacerlo en la configuración de cada menú para cada sitio en mi instalación multisitio.
fuente
Encontré esta respuesta al buscar un problema similar. Acabo de copiar el código en mi archivo finctions.php y funcionó de inmediato :) ¡espero que ayude!
Navegación dinámica para el tipo de publicación personalizada (páginas)
fuente
Lo que hago en lugar de agregar el enlace es crear una página vacía. En esa página agrego algo como "Contenido generado a partir de cpt-name" en el editor para que mi cliente sepa de dónde provienen todas las cosas.
Luego agrego esa página al menú y con el siguiente código me aseguro de que esté resaltado cuando se ejecuta archives-cpt o single-cpt.
Esto verificará el menú / título de la página y si realmente estamos viendo el archivo o la página individual de un tipo de publicación personalizada. Si es cierto, agregará la clase de elemento de menú actual.
fuente