web-dev-qa-db-fra.com

obtenir l'identifiant de la page parent lors de l'utilisation du menu personnalisé.

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!

1
Malibur

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;
}
1
Rarst