Php 如何使用$wpdb->;在WordPress中按菜单顺序获取帖子;获取_结果()?

Php 如何使用$wpdb->;在WordPress中按菜单顺序获取帖子;获取_结果()?,php,wordpress,Php,Wordpress,我有以下功能,可以构建自己的父子导航 我面临的问题是,我无法按菜单顺序对子菜单进行排序(因此,按顺序属性进行排序,可以在重新排序时设置每页的顺序属性)。如有任何关于如何操作的提示,将不胜感激 function wph_get_page_tree( $page_id ){ global $wpdb; $tree_data = []; $tree_data[$page_id] = ['title' => get_post($page_id)->post_title

我有以下功能,可以构建自己的父子导航

我面临的问题是,我无法按菜单顺序对子菜单进行排序(因此,按顺序属性进行排序,可以在重新排序时设置每页的顺序属性)。如有任何关于如何操作的提示,将不胜感激

function wph_get_page_tree( $page_id ){
    global $wpdb;
    $tree_data = [];
    $tree_data[$page_id] = ['title' => get_post($page_id)->post_title, 'ID' => $page_id];


    // get 1 level childs
    $level_1_childs = [];
    $all_childs = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM  {$wpdb->posts} WHERE post_parent = %d && post_type= 'page' && post_status='publish' ", $page_id ) );
    foreach( $all_childs as $single_2_level ){

        $level_1_childs[$single_2_level->ID] = ['title' => $single_2_level->post_title, 'ID' => $single_2_level->ID];
        //$level_1_childs[$single_2_level->ID] = $single_2_level->post_title;
        $all_sub_childs = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM  {$wpdb->posts} WHERE post_parent = %d && post_type= 'page' && post_status='publish' ", $single_2_level->ID ) );

        $level_2_childs = [];
        foreach( $all_sub_childs as $single_3_level ){
            $level_2_childs[$single_3_level->ID] = ['title' => $single_3_level->post_title, 'ID' => $single_3_level->ID];
        }
        //var_dump( $level_1_childs );
        $level_1_childs[$single_2_level->ID]['childs'] = $level_2_childs;
        //var_dump( $level_1_childs );
    }
    $tree_data[$page_id]['childs'] = $level_1_childs;

    //var_dump( $tree_data );
    return $tree_data;
}

您需要通过{$wpdb->posts}.menu\u ORDER ASC将订单传递给查询。检查下面的代码

function wph_get_page_tree( $page_id ){
    global $wpdb;
    $tree_data = [];
    $tree_data[$page_id] = ['title' => get_post($page_id)->post_title, 'ID' => $page_id];


    // get 1 level childs
    $level_1_childs = [];
    $all_childs = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM  {$wpdb->posts} WHERE post_parent = %d && post_type= 'page' && post_status='publish' ORDER BY {$wpdb->posts}.menu_order ASC ", $page_id ) );
    foreach( $all_childs as $single_2_level ){

        $level_1_childs[$single_2_level->ID] = ['title' => $single_2_level->post_title, 'ID' => $single_2_level->ID];
        //$level_1_childs[$single_2_level->ID] = $single_2_level->post_title;
        $all_sub_childs = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM  {$wpdb->posts} WHERE post_parent = %d && post_type= 'page' && post_status='publish' ORDER BY {$wpdb->posts}.menu_order ASC ", $single_2_level->ID ) );

        $level_2_childs = [];
        foreach( $all_sub_childs as $single_3_level ){
            $level_2_childs[$single_3_level->ID] = ['title' => $single_3_level->post_title, 'ID' => $single_3_level->ID];
        }
        //var_dump( $level_1_childs );
        $level_1_childs[$single_2_level->ID]['childs'] = $level_2_childs;
        //var_dump( $level_1_childs );
    }
    $tree_data[$page_id]['childs'] = $level_1_childs;

    //var_dump( $tree_data );
    return $tree_data;
}

您需要通过{$wpdb->posts}.menu\u ORDER ASC将订单传递给查询。检查下面的代码

function wph_get_page_tree( $page_id ){
    global $wpdb;
    $tree_data = [];
    $tree_data[$page_id] = ['title' => get_post($page_id)->post_title, 'ID' => $page_id];


    // get 1 level childs
    $level_1_childs = [];
    $all_childs = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM  {$wpdb->posts} WHERE post_parent = %d && post_type= 'page' && post_status='publish' ORDER BY {$wpdb->posts}.menu_order ASC ", $page_id ) );
    foreach( $all_childs as $single_2_level ){

        $level_1_childs[$single_2_level->ID] = ['title' => $single_2_level->post_title, 'ID' => $single_2_level->ID];
        //$level_1_childs[$single_2_level->ID] = $single_2_level->post_title;
        $all_sub_childs = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM  {$wpdb->posts} WHERE post_parent = %d && post_type= 'page' && post_status='publish' ORDER BY {$wpdb->posts}.menu_order ASC ", $single_2_level->ID ) );

        $level_2_childs = [];
        foreach( $all_sub_childs as $single_3_level ){
            $level_2_childs[$single_3_level->ID] = ['title' => $single_3_level->post_title, 'ID' => $single_3_level->ID];
        }
        //var_dump( $level_1_childs );
        $level_1_childs[$single_2_level->ID]['childs'] = $level_2_childs;
        //var_dump( $level_1_childs );
    }
    $tree_data[$page_id]['childs'] = $level_1_childs;

    //var_dump( $tree_data );
    return $tree_data;
}

谢谢这非常有效,并帮助我了解了如何在需要时实现这些功能。非常感谢。我被困在
{$wpdb->posts}。菜单顺序
欢迎。。。很高兴能帮上忙。谢谢!这非常有效,并帮助我了解了如何在需要时实现这些功能。非常感谢。我被困在
{$wpdb->posts}。菜单顺序
欢迎。。。很高兴能帮上忙。