wp_nav_menu: মেনুটি কেবল উপস্থিত থাকলেই প্রদর্শন করুন, অন্যথায় কিছুই দেখায় না


11

আমি wp_nav_menu ব্যবহার করার চেষ্টা করছি শুধুমাত্র যদি একটি মেনু উপস্থিত থাকে তবে অন্যথায়, কিছুই প্রদর্শন করবেন না।

যদি আমি মেনুটি মুছে ফেলি তবে এটি পৃষ্ঠাগুলির একটি তালিকা আউটপুট করবে।

আমার ফাংশন.এফপি ফাইলটিতে রয়েছে:

if (function_exists('register_nav_menus')) {
register_nav_menus (
array('main_nav' => 'Main Navigation Menu'));}

আমি কীভাবে wp_nav_menu ব্যবহার করতে পারি যদি একটি মেনু উপস্থিত থাকে তবে অন্যথায় কিছুই দেখায় না?

উত্তর:


19

ব্যবহার করুন has_nav_menu(), এবং পরীক্ষার জন্য theme_locationবদলে, menu_id:

<?php
if ( has_nav_menu( $theme_location ) ) {
    // User has assigned menu to this location;
    // output it
    wp_nav_menu( array( 
        'theme_location' => $theme_location, 
        'menu_class' => 'nav', 
        'container' => '' 
    ) );
}
?>

আপনি একটি elseধারা যোগ করে বিকল্প সামগ্রী আউটপুট করতে পারেন ।

সম্পাদনা

$theme_locationআপনার সত্যিকারের সাথে আপনাকে প্রতিস্থাপন করতে হবে theme_location:

<?php
if ( has_nav_menu( 'main_nav' ) ) {
    // User has assigned menu to this location;
    // output it
    wp_nav_menu( array( 
        'theme_location' => 'main_nav', 
        'menu_class' => 'nav', 
        'container' => '' 
    ) );
}
?>

মেনু না থাকলে এটি কিছু না করে, মেনু থাকলে দুর্ভাগ্যক্রমে এটি একই রকম হয় । অন্য কোন ধারণা?
রায়ান 21

আপনি কি নির্দিষ্ট থিমের স্থানে মেনু প্রয়োগ করেছেন?
চিপ বেনেট 21

না, কীভাবে করব?
রায়ান 21

1
Dashboard -> Appearance -> Menus। একটি কাস্টম মেনু তৈরি করুন এবং সংরক্ষণ করুন, তারপরে ড্রপডাউন মেনুটি ব্যবহার করে এটি নির্দিষ্ট থিম অবস্থানে প্রয়োগ করুন।
চিপ বেনেট 21

হ্যাঁ হ্যাঁ, আমি এটি করেছিলাম (স্ক্রিনশট: bit.ly/vrjNf9 )। দুর্ভাগ্যক্রমে, সমস্যাটি এখনও থেকে যায় - মেনু প্রদর্শিত হবে না won't পিএস আমার ফাংশনগুলির ফাইলটিতে এটি রয়েছে: যদি (ফাংশন_এক্সিস্টস ('রেজিস্টার_নাভ_মেনাস')) {নিবন্ধন_নাভ_মেনাস (অ্যারে ('মেইন_নাভ' => 'মেইন নেভিগেশন মেনু')))}
রায়ান

6

আপনি ঠিক fallback_cbতর্ক হিসাবে মিথ্যা নির্দিষ্ট করতে পারেন wp_nav_menu। কিছুই প্রদর্শিত হবে না - বরং, wp_nav_menu মিথ্যা ফিরিয়ে দেবে (কিছুতেই প্রতিধ্বনিত হবে)।

<?php
wp_nav_menu(array( 
    'theme_location' => $main_nav, 
    'menu_class'     => 'nav', 
    'container'      => '',
    'fallback_cb'    => false
));


0

আপনি অবস্থান নির্দিষ্ট না করে প্রথমে মেনুটি প্রথমে নিবন্ধভুক্ত করতে পারেন।
ইন functions.php:

add_action( 'init', 'register_my_menus' );
function register_my_menus() {  
    register_nav_menus(
        array(
            'header' => __( 'Header Menu' )
        )
    );
}

এবং আপনি যখন মেনুটি কল করবেন তখন header.phpচেক করুন has_nav_menu():

if ( has_nav_menu( 'header' ) ) {
    wp_nav_menu( array( 'theme_location' => 'header' ) ); 
}

আপনি একটি মেনু নিবন্ধিত হলে ছাড়া একটি থিম অবস্থান, তাই না এটা জন্য পরে অনুরোধ করতে পারেন সঙ্গে একটি থিম অবস্থান সীমাবদ্ধতা।
ফুসিয়া

0

এটি পড়ুন:

http://codex.wordpress.org/Function_Reference/wp_nav_menu

সেট 'ফ্যালব্যাক_সিবি' => মিথ্যা এবং কোনওটি প্রদর্শিত হবে না, এটি হ'ল ডাব্লুপি দ্বারা প্রস্তাবিত স্ট্যান্ডার্ড পদ্ধতি।


এটি ক্রিসগুইটারগুই উত্তর হিসাবে একই ...
brasofilo

আমি জানি, আমি কেবল আপনাকে ওয়ার্ডপ্রেস কোডেক্সের মূল নিবন্ধটি নির্দেশ করতে চেয়েছিলাম।
হুমান আসকারি

মনে হচ্ছে এটি সত্য নয়। ডক্স বলেছেন: একটি theme_location পরামিতি দেওয়া পারেন, ফাংশন প্রদর্শন developer.wordpress.org/reference/functions/wp_nav_menu/... আইডি, স্লাগ্, অথবা মেনু পরামিতি দ্বারা প্রদত্ত নাম মিলে মেনু; অন্যথায়, প্রথম খালি মেনু; অন্যথায় (বা মেনু দ্বারা প্রদত্ত মেনুটি খালি থাকলে), ফ্যালব্যাক_সিবি পরামিতি দ্বারা প্রদত্ত ফাংশনের আউটপুট (wp_page_menu (), ডিফল্টরূপে); অন্যথায় কিছুই না।
আলিরিজা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.