Wp_nav_menu- এ আমি কীভাবে উল অপসারণ করব?


18

আমি এই সাইটে অনুসন্ধান করেছি এবং এই প্রশ্নের অনেক উত্তর পেয়েছি । তাদের বেশিরভাগই আমার থিমটিতে কাজ করছেন না।

এখানে আমি একটি সমাধান পেয়েছি এবং এটি আমার প্রয়োজন অনুসারে কাজ করছে।

function wp_nav_menu_no_ul()
{
    $options = array(
        'echo' => false,
        'container' => false,
        'theme_location' => 'primary'
    );

    $menu = wp_nav_menu($options);
    echo preg_replace(array(
        '#^<ul[^>]*>#',
        '#</ul>$#'
    ), '', $menu);

}

এই কোডটি ulশুরুতে এবং এর শেষে সরিয়ে ফেলবে wp_nav_menu()। তাই আমার থিমটিতে আমি কেবল লিখি

<ul class="primary-nav">
<?php  wp_nav_menu_no_ul(); ?>
</ul>

তবে অ্যাডমিনের মাধ্যমে আমি যখন কোনও মেনু যুক্ত বা সক্রিয় না করি তখন আবার সমস্যা চলে আসে। http://domain.com/wp-admin/nav-menus.php

প্রশ্ন:

<div><ul>**</ul></div>মেনুটি সক্রিয় আছে কিনা তা আমি কীভাবে সরিয়ে ফেলব । আমাকে জানতে দাও


অবশেষে আমি এটি কাজ পেয়েছিলাম :) functions.php

function wp_nav_menu_no_ul()
{
    $options = array(
        'echo' => false,
        'container' => false,
        'theme_location' => 'primary',
        'fallback_cb'=> 'default_page_menu'
    );

    $menu = wp_nav_menu($options);
    echo preg_replace(array(
        '#^<ul[^>]*>#',
        '#</ul>$#'
    ), '', $menu);

}

function default_page_menu() {
   wp_list_pages('title_li=');
} 

header.php

<ul class="primary-nav">
<?php  wp_nav_menu_no_ul(); ?>
</ul>

আপনি যেভাবে আবার এটি যুক্ত করার সাথে সাথে ইউলটি সরিয়ে ফেলতে চান? আপনি উল এবং ক্লাস এবং / অথবা আইডি বৈশিষ্ট্য সেট করতে menu_classএবং menu_idপরামিতি ব্যবহার করতে পারেন ।

আমি সুপারফিশ ব্যবহার করতে চাই menu_classএবং menu_idমেনু সক্রিয় হলে কেবলমাত্র কাজ করবে। বিদ্যমান নয় মেনু হলে menu_classএবং menu_idযেমন নয় <ul>কিন্তু <div>। কেন wp_nav_menu()আপনার সম্পর্কে খুব বেশি প্রশ্ন এটি পরীক্ষা করতে পারে :)
হাহা

উত্তর:


11

Wp_nav_menu ফাংশনটি ফ্যালব্যাক_সিবি-এর একটি আর্গুমেন্ট নেয় যা মেনুটির অস্তিত্ব না থাকলে চলার জন্য ফাংশনের নাম। সুতরাং আপনার কোডটি এই জাতীয় কিছুতে পরিবর্তন করুন:

function wp_nav_menu_no_ul()
{
    $options = array(
        'echo' => false,
        'container' => false,
        'theme_location' => 'primary',
        'fallback_cb'=> 'fall_back_menu'
    );

    $menu = wp_nav_menu($options);
    echo preg_replace(array(
        '#^<ul[^>]*>#',
        '#</ul>$#'
    ), '', $menu);

}

function fall_back_menu(){
    return;
}

এমনকি আপনি মেনু থেকে ধারকটি অপসারণ করতে পারেন এবং wp_nav_menu ফাংশনে প্রেরিত আরও কিছু যুক্তি দিয়ে অন্যান্য স্টাফ করতে পারেন

আশাকরি এটা সাহায্য করবে.


@ בניית אתרים - আপনার ব্যাখ্যার জন্য ধন্যবাদ। তবে আমি এখানে ঝাপসা হয়ে যাচ্ছি। নোট অনুসারে যদি আমি মিথ্যা সেট করে কাজ করি তবে আমার nav-menu-template.php fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'. Set to false for no fallbackকী প্রতিস্থাপন করা উচিত ? কারণ এটি আপাতত ফাঁকা ফিরবে। wp_nav_menu_no_ul()fallback_cb
হা হা

এখন বুঝতে পেরেছি :) অনেক অনেক ধন্যবাদ אתרים אתרים বিটিডাব্লু, আমি কীভাবে আপনার ডাকনামটি উচ্চারণ করব? খনিha ha
হাহা

LOL, খুশী আপনি এটি যান।
বেন্টারনেট

আমি একই জিনিসটি অবাক করেছি, এটি হিব্রু আমি ধরে
নিয়েছি

:) হ্যাঁ এটি হিব্রু এবং এটির একটি নিক আমি কিছুক্ষণ এগিয়ে গিয়েছিলাম যে সঠিকভাবে অনুবাদ করা থাকলে "ওয়েব ডিজাইন" এর মতো কিছু হয়।
বেন্টারনেট

57

আসলে, ওয়ার্ডপ্রেস এটি ডিফল্টরূপে সমর্থন করে:

wp_nav_menu(array(
    'items_wrap' => '%3$s'
));

ডিফল্ট items_wrapহল <ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>


3
এটা সঠিক উত্তর. <ul>এটি ইতিমধ্যে যুক্ত হওয়ার পরে একটি প্রোগ্রামেটিক অনুসন্ধান এবং প্রতিস্থাপনের অন্যান্য উত্তরগুলি কেবল পিছনের দিকে রয়েছে
মাইকিমেক

'container' => falseআপনি <div>পাশাপাশি মোড়ানো থেকে মুক্তি পেতে চাইলে ।
জর্জ দিমিত্রিডিস

এটি ডিফল্টভাবে ওয়ার্ডপ্রেসে সত্যই কনফিগারযোগ্য। ধন্যবাদ!
আবদাল্লা আরবব

সেরা উত্তর, হ্যাকের প্রয়োজন নেই
ইমান

এটি আমার পক্ষে
ডাব্লুপি


4

আপনি যদি কেবল <a>ট্যাগ মুদ্রণ করতে চান তবে আপনি এই পথে যেতে পারেন:

$primaryMenu = array(
    'theme_location'  => 'primary',
    'menu'            => '',
    'container'       => '',
    'container_class' => false,
    'container_id'    => '',
    'menu_class'      => 'menu',
    'menu_id'         => 'primary-menu',
    'echo'            => false,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'depth'           => 0,
    'walker'          => ''
);
echo strip_tags( wp_nav_menu( $primaryMenu ), '<a>' );

এই কাজটি আমার পক্ষে নিখুঁত, কেবলমাত্র 'আইটেম_রাপ' => '% 3 $ s'
setting সেট করা ডাব্লুপি


0

আমি জানি যে এই উত্তরটি এই প্রশ্নের জন্য পুরোপুরি নয় তবে এমন অনেক লোক আছেন যারা ওয়ার্ডপ্রেসে উল এবং লি ট্যাগটি সরিয়ে এবং ওয়ার্ডপ্রেসে অন্য ট্যাগ যুক্ত করবেন তা জানেন know

আমার কোড প্রয়োগের আগে যেমন ওয়ার্ডপ্রেস মেনুতে এই ধরণের আউটপুট দেয়

<ul class="*****"><li>abc</li></ul>

তবে কেউ উলকে ডিভ এবং লিতে একটি ট্যাগে পরিবর্তন করতে চায় তবে আপনার নীচের কোডটি ব্যবহার করা উচিত

            <?php

                $menuParameters = array(
                    'menu' => 'primary_menu',
                    'link_before'     => '<span>',
                    'link_after'      => '</span>',
                    'before'        => '<div class="tp-primary-header mui-top-home">',
                    'after'     => '</div>',
                    'container'       => false,
                    'echo'            => false,
                    'depth'           => 0,
                );

                echo strip_tags(wp_nav_menu( $menuParameters ), '<a><span><div>' );
                ?>

এটি নিম্নলিখিত বিন্যাসে আউটপুট দেয়

<div class="tp-primary-header mui-top-home"><a href="#"><span>ABC</span></a></div>
<div class="tp-primary-header mui-top-home"><a href="#"><span>def</span></a></div>
<div class="tp-primary-header mui-top-home"><a href="#"><span>XYZ</span></a></div>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.