在使用自定义菜单时获取父页面ID。

时间:2014-03-19 作者:Malibur

Im使用自定义菜单显示使用wp\\U nav\\U menu()的菜单。我想在菜单中获取父级的\\u content(),而不将其设置为页面中的父级页面。是否有方法获取父id(在php中)。我可以看到wp\\u nav\\u菜单为父项提供了一个特殊的类名,因此我相信我应该能够检索该项id,并在页面加载之前对其进行处理。这可能吗?

谢谢

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

不确定这是否足够健壮,但它显示了通过菜单的基本遍历,首先查找当前帖子,然后再查找其菜单父项:

/**
 * @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;
}

结束