নাভ আইটেমগুলি থেকে পৃষ্ঠা আইডি পান


11

আমি আমার নেভিগেশনে সমস্ত আইডি নেওয়ার চেষ্টা করছি এবং এটিকে একটি স্ট্রিংয়ে রূপান্তর করব যাতে wp_queryকেবল এটি নেভের তালিকাভুক্ত পৃষ্ঠাগুলি পেতে আমি এটি ব্যবহার করতে পারি । আইডিগুলি পেতে কোড:

$menu_name = 'primary';

if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] )) {
    $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
    $menu_items = wp_get_nav_menu_items($menu->term_id);
}

foreach ( $menu_items as $menu_item ) {
    $numbers[] = $menu_item->ID;
}

$number = implode(',',$numbers);

তবে এটি ভুল নম্বরগুলি ফিরিয়ে দিচ্ছে। আমি যখন প্রশাসক অঞ্চলে যাই এবং পৃষ্ঠাগুলির উপর দিয়ে আমার মাউসটি ঘুরে দেখি, তখন স্ক্রিনের নীচে অ্যাড্রেস বারে প্রদর্শিত সংখ্যাটি মেলে না। আমি কি ভুল করছি?

উত্তর:


13

মেনু আইটেম সঞ্চিত আছে postsএকটি টেবিল post_typeএর nav_menu_item। সুতরাং, আপনি কী ফিরে আসছেন তা হ'ল মেনু আইটেমের আইডি, এটি কী নির্দেশ করে।

মেনু আইটেমটি যে পৃষ্ঠা / পোস্ট আইডিটিকে উল্লেখ করে তা মেনু আইটেম এবং = এর postmetaসাথে post_idমেলে এমন একটি সারণীতে সঞ্চিত থাকে । পাওয়ার সহজতম উপায় (যেমন পৃষ্ঠাটি মেনু আইটেম দ্বারা দেখানো হচ্ছে) এরকম কিছু ব্যবহার করা:IDmeta_key_menu_item_object_idmeta_value

$numbers[] = get_post_meta( $menu_item->ID, '_menu_item_object_id', true );


আমি উপরে যে কোডটি পোস্ট করেছি তা কাজে পেতে আমার কিছুটা সময় লেগেছে। আমি আপনার কোডটি যুক্ত করার চেষ্টা করছি কিন্তু আমি এটি কার্যকর করতে সক্ষম হইনি। আমি ফরচ লুপটি বের করেছিলাম এবং উপরে আপনার লাইনটি চেষ্টা করেছিলাম কিন্তু কিছুই পেলাম না। আমি কিভাবে আপনার উদাহরণ ব্যবহার করব?
জেমি

@ জেমি আপনার লাইনটি কেবল প্রতিস্থাপন করুন: $numbers[] = $menu_item->ID;আমার উত্তরটির সাথে।
আনু

1

এই পরিবর্তনটি কখন ঘটেছিল তা আমি আপনাকে বলতে সক্ষম হবো না তবে ওয়ার্ডপ্রেস সংস্করণ 5.2.4 হিসাবে আপনি ব্যবহার করতে পারেন objectএবং object_idপৃষ্ঠা আইডিটি পুনরুদ্ধার করতে পারেন । আমি এখানে এটি কীভাবে করব:

/**
 * The `0` is added as a default case.
 * In case our menu does not contain any pages this
 * will prevent our query from returning all pages
 */
$page_ids           = array( 0 );
$registered_menu    = 'my_registered_menu';
$locations          = get_nav_menu_locations();

if( ! empty( $locations ) && isset( $locations[ $registered_menu ] ) ) {

    $menu = wp_get_nav_menu_object( $locations[ $registered_menu ] );
    $menu_items = wp_get_nav_menu_items( $menu->term_id );

    if( ! empty( $menu_items ) ) {

        foreach( $menu_items as $item ) {

            // Only grab page IDs
            if( 'page' !== $item->object ) {
                continue;
            }

            $page_ids[] = $item->object_id;

        }

    }

}

$page_query = new WP_Query( array(
    'post_type'     => 'page',
    'post_status'   => 'publish',
    'no_found_rows' => true,
    'post__in'      => $page_ids,
    'posts_per_page'=> 100, // Large upper limit
) );

মজাদার. আপনাকে ধন্যবাদ
জেমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.