Bagaimana cara menghapus UL di wp_nav_menu?

18

Saya mencari di situs ini dan menemukan banyak jawaban untuk pertanyaan ini. Kebanyakan dari mereka tidak mengerjakan tema saya.

Ini adalah satu solusi yang saya temukan dan berfungsi sesuai dengan kebutuhan saya.

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);

}

Kode ini akan dihapus ulpada awal dan akhir wp_nav_menu(). Jadi dalam tema saya, saya hanya menulis

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

Tetapi masalahnya akan datang lagi ketika saya tidak menambah atau mengaktifkan menu apa pun melalui admin. http://domain.com/wp-admin/nav-menus.php

Pertanyaan :

Bagaimana cara menghapus <div><ul>**</ul></div>apakah menu aktif atau tidak. Biarkan aku tahu


Akhirnya saya berhasil :) 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>
ha ha
sumber
Mengapa Anda ingin menghapus UL ketika Anda menambahkannya lagi? Anda dapat menggunakan parameter menu_classdan menu_iduntuk mengatur atribut class dan / atau id pada UL.
Saya ingin menggunakan ikan super. menu_classdan menu_idhanya akan berfungsi jika menu diaktifkan. Jika menu tidak ada menu_classdan menu_idbukan sebagai <ul>tetapi sebagai <div>. Itulah mengapa terlalu banyak pertanyaan tentang wp_nav_menu()Anda dapat mengujinya :)
haha

Jawaban:

11

Fungsi wp_nav_menu mengambil argumen fallback_cb yang merupakan nama fungsi untuk dijalankan jika menu tidak ada. jadi ubah kode Anda menjadi seperti ini:

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;
}

Anda bahkan dapat menghapus wadah dari menu dan melakukan hal-hal lain dengan beberapa argumen lagi yang dikirim ke fungsi wp_nav_menu

Semoga ini membantu.

Bainternet
sumber
@ בניית אתרים - Terima kasih atas penjelasan Anda. Tapi saya semakin kabur di sini. Menurut catatan pada 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 fallbackApa yang harus saya ganti agar wp_nav_menu_no_ul()bekerja jika saya salah fallback_cb? Karena itu kembali kosong untuk saat ini.
haha
Sekarang mengerti :) Terima kasih banyak בניית אתרים. BTW, bagaimana cara mengucapkan nama panggilan Anda? Milik sayaha ha
haha
LOL, senang kamu melakukannya.
Bainternet
Saya telah bertanya-tanya hal yang sama, itu Ibrani saya berasumsi, apa yang akan menjadi terjemahan yang akurat, karena penasaran .. :)
t31os
:) ya itu bahasa Ibrani dan sebuah nick saya mengambil sementara pergi bahwa jika diterjemahkan dengan benar berarti sesuatu seperti "desain web".
Bainternet
57

Sebenarnya, WordPress mendukung ini secara default:

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

Default untuk items_wrapadalah <ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>.

Martti Laine
sumber
3
Ini jawaban yang benar. Jawaban lain dari melakukan pencarian & ganti terprogram untuk dihapus <ul>setelah ditambahkan baru saja mundur
mikemike
'container' => falsejika Anda ingin menyingkirkan pembungkusnya <div>juga.
George Dimitriadis
Memang benar dapat dikonfigurasi di WordPress secara default. Terima kasih!
Abdalla Arbab
jawaban terbaik, tidak perlu hack
Eman
ini tidak bekerja untuk saya dalam wp 5.2
rafaelphp
4

Jika Anda ingin mencetak hanya <a>tag, Anda dapat melakukannya:

$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>' );
Pavlo Zamoroka
sumber
ini berfungsi sempurna untuk saya, hanya menetapkan `'items_wrap' => '% 3 $
s'`
2

Bagi saya yang berhasil adalah ini:

<?php wp_nav_menu( array(
       'container' => '',
       'items_wrap' => '%3$s' 
) ); ?>

Semoga ini bisa membantu.

Orbital Pixel
sumber
0

Saya tahu bahwa jawaban ini tidak sepenuhnya untuk pertanyaan ini tetapi ada begitu banyak orang yang mengetahui cara menghapus tag ul dan li di WordPress dan menambahkan tag lain di WordPress.

Seperti sebelum menerapkan kode saya, WordPress memberikan jenis output ini dalam menu

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

Tetapi seseorang ingin mengubah ul menjadi div dan li menjadi tag maka Anda harus menggunakan kode di bawah ini

            <?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>' );
                ?>

Ini memberikan output dalam format berikut

<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>
Sumit Kumar Gupta
sumber