J'utilise des menus personnalisés pour afficher un menu à l'aide de wp_nav_menu (). Je veux obtenir le_content () du parent dans le menu, sans le définir comme page parent dans les pages. Y at-il un moyen d'obtenir l'ID parent (en php). Je peux voir que le wp_nav_menu attribue un nom de classe spécial à l'élément parent. Je pense donc que je devrais être en mesure de récupérer cet élément et de le modifier avant le chargement de la page. Est-ce possible?
Merci!
Je ne suis pas sûr que cela soit suffisamment robuste, mais cela montre le parcours de base dans le menu pour rechercher le post actuel en premier, puis son parent:
/**
* @param mixed $menu
* @param int $post_id
*
* @return WP_Post|bool
*/
function get_menu_parent( $menu, $post_id = null ) {
$post_id = $post_id ? : get_the_ID();
$menu_items = wp_get_nav_menu_items( $menu );
$parent_item_id = wp_filter_object_list( $menu_items, array( 'object_id' => $post_id ), 'and', 'menu_item_parent' );
if ( ! empty( $parent_item_id ) ) {
$parent_item_id = array_shift( $parent_item_id );
$parent_post_id = wp_filter_object_list( $menu_items, array( 'ID' => $parent_item_id ), 'and', 'object_id' );
if ( ! empty( $parent_post_id ) ) {
$parent_post_id = array_shift( $parent_post_id );
return get_post( $parent_post_id );
}
}
return false;
}