Estoy creando un tema con un tipo de publicación personalizado para los miembros del equipo, también tengo la siguiente estructura de página:
about <-- this is a page
about/team-members <-- this is a page, lists all the team members
about/team-members/joe-bloggs <-- this is a custom post type (team member) entry
La tercera estructura aquí usa las páginas acerca de y miembros del equipo, pero luego usa el slug de tipo de publicación personalizado para que parezca que sus padres son miembros del equipo y acerca de. Lo logré configurando las siguientes opciones en el tipo de publicación personalizada:
...
'rewrite' => array( 'slug' => 'about/team-members', 'with_front' => false)
...
Esto funciona muy bien, sin embargo, cuando llego al nivel de publicación de miembro del equipo, ya no obtengo las clases de página actual, ancestro actual en las páginas principales. Sé por qué es así, porque técnicamente no estamos en una página padre de esas páginas, sin embargo, ¿hay alguna manera de que pueda engañar / arreglar / bodge para que las páginas parezcan padres?
Lo había logrado muy bien mediante el uso de páginas para los miembros del equipo, sin embargo, se eligió un tipo de publicación personalizada para facilitar el uso del administrador.
Gracias chicos + chicas!
fuente
register_post_type
documentación, ¿me pueden ayudar?Respuestas:
Al trabajar con páginas, puede seleccionar una página principal y ese valor se guarda como el número de identificación de la página principal en el
post_parent
campo de la página secundaria en la base de datos.En su caso, está utilizando un tipo de publicación personalizado, por lo que necesitaría crear su propio metabox para la página principal; algo como:
No tiene nada que ver con eso
register_post_type
. Estás engañando a WordPress para que piense que es una página secundaria de otro tipo de publicación (página).fuente
wp_list_pages
.wp_nav_menu
: post_parent trata sobre / team-members pero la navegación resalta el elemento principal de mis publicaciones de blog "normales" ... ¿alguna otra idea de cómo podría solucionar esto?Fui con un andador personalizado para lograr algo similar ... evita las necesidades de campos personalizados, pero todas las publicaciones de un tipo deben ubicarse debajo del mismo punto en el árbol de la página.
fuente
Descargo de responsabilidad: después de intentarlo, este parece un problema que ya no existe, porque, al menos para mí, simplemente funciona en mi instalación de WP 3.9.2. Sin embargo, no pude encontrar un rastreador de errores correspondiente.
Tengo un pequeño complemento para probar esto, que podría ayudar a alguien. Pero como dije en el descargo de responsabilidad anterior, no pude reproducir el problema en una instalación actual de WordPress. He separado el complemento en cuatro archivos, van juntos en un directorio dentro del directorio del complemento.
plugin-cpt_menu_hierarchy.php :
include-register_post_type.php :
include-cpt_parent_meta_box.php :
include-menu_highlighting.php :
fuente
Una posible solución es que siempre que se guarde el tipo de publicación personalizada, puede configurar su 'padre para que sea
about/team-members
programáticamente.Aquí están los pasos:
fuente
Tuve más tiempo para profundizar en esto (lo siento si perdí el tiempo de alguien), y pensé que para mí, la mejor manera de resolver el problema de resaltado sería volver a hacer lo que
_wp_menu_item_classes_by_context()
está haciendo, es decir, repetir todo padres y antepasados del elemento de menú que actúa como el padre de mi tipo de publicación personalizada, y agregue clases adecuadamente.Dado que también quería que la página principal para mi tipo de publicación personalizada fuera fija y fácil de cambiar sin tener que actualizar todas las publicaciones una vez que el padre cambia, he decidido usar una opción en lugar de completar el
post_parent
campo de mis publicaciones de tipo de publicación personalizada. He usado ACF para eso ya que lo estoy usando en mi tema de todos modos, pero usar la funcionalidad de la opción predeterminada de WordPress por supuesto también lo haría.Para mis necesidades podría hacer uso de
wp_nav_menu_objects
filtro. Además, tuve que filtrar lapage_for_posts
opción para que devuelva un valor falso / vacío, esto evita que la página de publicaciones predeterminada también se destaque.Tenga en cuenta que no fui hasta el final, el filtro solo agrega el
current-menu-ancestor
current-menu-parent
clases y , ¡ya que esto fue suficiente para mis necesidades!En aras de la exhaustividad, al completar
post_parent
(ver la respuesta de @ Bainternet ) en lugar de usar opciones, luego recuperar la ID principal podría verse así:fuente
http://codex.wordpress.org/Function_Reference/get_post_type_object http://codex.wordpress.org/Function_Reference/get_page_by_path
EDITAR 1:
Como los punteros no funcionan:
fuente