Mövzu üzrə bənzər suallara da baxa bilərsiniz.

WordPress menu code

Salam. WordPress de menyu yaratmışam. menyu 4 tree dən ibarət olmalıdı. məsələn

Tree1
-Tree2
–Tree3
—Tree4

Bunu wordpressin öz menyu funksiyası ilə yaratmaq olar? Çalışdım ama html kodlar fərqlidi deyə wordpress sade kodla qaytarir ul li ile ve class vermək olur fsyo. ama məndə olan menyu strukturu fərqlidi biraz. ona görə də custom etmək istəyirem menyunu.

bu kod ile

            <?php
            $menu_name = 'header_menu';
            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);
                
print_r($menu_items);
                
            }


            ?>

bütün menyulari qaytarir mənə . 1 ci root menyunu əgər parent id 0 dirsa bilirəm. 2 ci tree ni de parent id hansi id ye aid oldugunu ayirib bilmək olar. qalir 3 cu ve 4 cu parent leri tapmaq. onları ayıra bilmirem. fikrimde tutdugum mentiq beledir ki her bir tree ni ayri ayri arraylara yiğam.

Array1
Array2
Array3
Array4.

ve belece istenilen formada istifade edem.

və ya başqa cür sadə bir yolla necə etmək olar bunu? teşekkür edirəm.


Kateqoriya: Sual . , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (10 cavab var)

(16:19, 13/05/2015 ) #55345

Salam. Niyə drag&drop ilə istədiyiniz custom menunu wp-admin/appearance/menus bölməsindən etməyəsiz ki? Sonra da sadəcə o kodu wp_nav_menu(‘menyunun adı’); çağırırsız vəssalam

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (17:49, 13/05/2015 ) #55346

    Dediyiniz kimi etmisem wp adminden. drag drop ile. sadece menyunu gostermek isteyende mene istediyim neticeni vermir wp_nav_menu(‘header_menu’); bele yazanda. sade

    • menu

    bele qaytarir html olaraq. ama menim menyu kodum tam bawqa strukturdadi.

    bu menyunu hemen siz yazdiginiz kodla nece elde ede bilerem? wp adminde elave etmisem her weyi drag drop ile.

    mene lazim olan netice kod ise bele olmalidi.

                    <nav id="nav">
                        <ul>
                            <li><a href="#">HAQQIMIZDA</a></li>
                            <li>
                                <a href="#" class="sub"><span>FİZİKİ ŞƏXSLƏRƏ</span></a>
                                <div class="submenu">
                                    <div>
                                        <article>
                                            <h1>KREDİTLƏR</h1>
                                            <div>
                                                <ul>
                                                    <li><a href="#">İstehlak kreditləri</a></li>
                                                    <li><a href="#">Mikro kreditlər</a></li>
                                                    <li><a href="#">Avto kredit</a></li>
                                                    <li><a href="#">Kredit kartlar</a></li>
                                                    <li><a href="#">İpoteka kreditləri və AİF</a></li>
                                                    <li><a href="#">Lombard kreditləri</a></li>
                                                    <li><a href="#">Sərbəst kreditlər</a></li>
                                                </ul>
                                            </div>
                                        </article>
                                    </div>
                                    <div>
                                        <article>
                                            <h1>BANK KARTLARI</h1>
                                            <div>
                                                <h2>Kart növləri</h2>
                                                <ul>
                                                    <li><a href="#">Kredit kartlar</a></li>
                                                    <li><a href="#">Debet kartlar</a></li>
                                                    <li><a href="#">Internet kartlar</a></li>
                                                    <li><a href="#">Biznes kartlar</a></li>
                                                </ul>
                                            </div>
                                            <div>
                                                <h2>E-Banking</h2>
                                                <ul>
                                                    <li><a href="#">MobilBank</a></li>
                                                    <li><a href="#">İnternetBank</a></li>
                                                    <li><a href="#">SMS Xəbərdarlıq</a></li>
                                                    <li><a href="#">Mobil rabitə ödənişləri</a></li>
                                                    <li><a href="#">Elektrik enerjisinin ödənişləri</a></li>
                                                    <li><a href="#">İnternet xidmətlərinin ödənişləri</a></li>
                                                    <li><a href="#">KartTransfer</a></li>
                                                    <li><a href="#">Digər</a></li>
                                                </ul>
                                            </div>
    
                                        </article>
    
                                    </div>
                                </div>
                            </li>
    
                            <li><a href="#">E-BANKİNG</a></li>
                            <li><a href="#">MƏLUMAT MƏRKƏZİ</a></li>
                        </ul>
                    </nav>
    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(10:25, 14/05/2015 ) #55361

Menyunun adını düz yazmırsız. wp_nav_menu funksiyası ad qəbul etmir.
Belə yazmaq lazımdır:
wp_nav_menu(array(‘menu’=>’menyunun deqiq adi’));

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (12:41, 14/05/2015 ) #55368

    sizin yazdiginiz kimi netice verdi mene. menyunu cixarir ama tam bawqa formatda. mene lazim olan struktur yuxarida qeyd etdiyim kimidir html kodlar. ama wp_nav_menu() ise mene bunu qaytardi.
    mendeki menu kodunda struktur ferqlidi bundan.ona gore ne qeder caliwdim wp_nav_menu ile hell ede bilmedim.

    <nav id="nav" class="menu-header-menu-container"><ul id="menu-header-menu" class=""><li id="menu-item-54" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-54"><a href="#">HAQQIMIZDA</a></li>
    <li id="menu-item-55" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-55"><a href="#">FİZİKİ ŞƏXSLƏRƏ</a>
    <ul class="sub-menu">
    	<li id="menu-item-156" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-156"><a href="#">ƏMANƏTLƏR</a></li>
    	<li id="menu-item-157" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-157"><a href="#">KREDİTLƏR</a></li>
    	<li id="menu-item-158" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-158"><a href="#">KÖÇÜRMƏLƏR</a></li>
    	<li id="menu-item-159" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-159"><a href="#">BANK KARTLARI</a></li>
    	<li id="menu-item-160" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-160"><a href="#">DİGƏR XİDMƏTLƏR</a></li>
    </ul>
    </li>
    <li id="menu-item-56" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-56"><a href="#">HÜQUQİ ŞƏXSLƏRƏ</a>
    <ul class="sub-menu">
    	<li id="menu-item-161" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-161"><a href="#">ƏSAS XİDMƏTLƏR</a></li>
    	<li id="menu-item-162" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-162"><a href="#">KÖÇÜRMƏLƏR</a></li>
    	<li id="menu-item-163" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-163"><a href="#">ƏMƏK HAQQI KARTLARI</a></li>
    	<li id="menu-item-164" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-164"><a href="#">TARİFLƏR</a></li>
    </ul>
    </li>
    <li id="menu-item-57" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-57"><a href="#">E-BANKİNG</a></li>
    <li id="menu-item-58" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-58"><a href="#">MƏLUMAT MƏRKƏZİ</a></li>
    </ul></nav>
    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

      (18:05, 14/05/2015 ) #55375

      Sizin kodda custom html kodlar var çoxlu. Ona görə də nav menu yazıq onu edə bilməz axı.
      2 həlli var bunun.
      1. Hər ul-ə uyğun bir menyu yaratmaq və bu html-in dinamik olmayan hissələrini koda statik olaraq daxil edib yalnız ul hissələrin yerində həmin yaradılan menyuları wp_nav_menu ilə çağırmaq – bu asan və tezbazar həlldir ki sizin işinizi tam görür.
      2. wp_nav_menu üçün Walker class yazmaq. Bu işin profesional və effektiv həllidir, amma bir az dərin wp codex biliyi tələb edir.

      Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(15:46, 15/05/2015 ) #55400

Tesekkurler Elvin. dediyiniz Walker ile eledim. cox rahat bir yoldu istenilen formaya salmaq olur kodlari. ama bir wey var ki butun menyulari ul li ile verir. mene ise lazimdir ki ul li ni ozum yazim harda lazimdirsa. menim menyuda 1 ci tree de menyular li teqi arasinda ama 2-3 tree de ul yoxdu. ve 4 cu en son tree ul li iledi.

Yazdigim class beledi. burda depth 1 normaldi lazimi neticeni verir.

ama depth 2 olanda orda yazilan article teqi arasinda olan title sadece adice text olmalidi. bele ama indi li teqleri arasina salir article di. articleden evvele li teqleri elave edir. nece etmek olar ki bunu etmesin o teqi?

class Header_Menu_Walker extends Walker_Nav_Menu {

    public function start_lvl( &$output, $depth = 0, $args = array() ) {
        $output .= "\n<ul>\n";
    }

    public function end_lvl( &$output, $depth = 0, $args = array() ) {
        $output .= "</ul>\n";
    }

    public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
        $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

        $classes = empty( $item->classes ) ? array() : (array) $item->classes;

        $output .= $indent . '<li>';

        $atts = array();
        $atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';
        $atts['target'] = ! empty( $item->target )     ? $item->target     : '';
        $atts['rel']    = ! empty( $item->xfn )        ? $item->xfn        : '';
        $atts['href']   = ! empty( $item->url )        ? $item->url        : '';
        $atts['class']   = $depth == 0 && in_array('menu-item-has-children', $classes) ? 'sub' : '';

        $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );

        $attributes = '';
        foreach ( $atts as $attr => $value ) {
            if ( ! empty( $value ) ) {
                $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
                $attributes .= ' ' . $attr . '="' . $value . '"';
            }
        }
        if($depth == 0) {
            $item_output = $args->before;
            $item_output .= '<a>';
            $item_output .= $args->link_before .($depth == 0 && in_array('menu-item-has-children', $classes) ? '<span>' : ''). apply_filters( 'the_title', $item->title, $item->ID ).($depth == 0 && in_array('menu-item-has-children', $classes) ? '</span>' : '') . $args->link_after;
            $item_output .= '</a>';
            $item_output .= $depth == 0 && in_array('menu-item-has-children', $classes) ? '<div class="submenu">' : '';
            $item_output .= $args->after;
        }

         if($depth == 1) {
            $item_output = '<article>';
            $item_output .= '<h1>'.apply_filters( 'the_title', $item->title, $item->ID ).'</h1>';
        }

         if($depth == 2) {
            $item_output = $args->before;
            $item_output .= '<a>';
            $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
            $item_output .= '</a>';
            $item_output .= $args->after;
        }

         if($depth == 3) {
            $item_output = $args->before;
            $item_output .= '<a>';
            $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
            $item_output .= '</a>';
            $item_output .= $args->after;
        }


        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    }

    public function end_el( &$output, $item, $depth = 0, $args = array() ) {
        $classes = empty( $item->classes ) ? array() : (array) $item->classes;

        if($depth == 0) {
            $output .= $depth == 0 && in_array('menu-item-has-children', $classes) ? '</div>' : '';
        } else

        if($depth == 1) {
            $output .= '</article>';
        } else

        if($depth == 2) {

        } else

        if($depth == 3) {


        }

        $output .= "</li>\n";
    }


}
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (17:48, 15/05/2015 ) #55404

    Belə anlamaq çətindir problemi. Gərək ki, çıxan nəticənin də kodunu yazasız və onu tutuşduram ən yuxarıda yazdığınız arzulanan html ilə.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(17:40, 15/05/2015 ) #55403

sorry. sehvimi tapdim ozum. depth yoxlamamiwdan evvel yuxarida $output a menimsedilmiw ul var ki oda ifden yuxarida qalib ona gore her defa join olur. bunu hell etdim. ama bawqa bir problem yaranib.

demeli eger menyuda 4 cu tree varsa onnan evvel 3 cu tree nin adi adi div icinde olmalidi title kimi. yox eger 4 cu tree yoxdursa onda 3 cu tree ozu ul li icinde olur link kimi. bunu da etmek ucun start_lvl(); funksiyasinin icinde bilmeliyem ki eger subu yoxdursa ul teqini acim. varsa eger div acim. ama start_lvl(); icinde nece yoxlaya bilerem ki sub var ya yoxdu?

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(23:25, 15/05/2015 ) #55407

start_el() funksiyasi icinde bu sekilde classlarin siyahisini ala bilirem. $item ile.

$classes = empty( $item->classes ) ? array() : (array) $item->classes;

ama start_lvl(); icinde $item yoxdu. hansisa yolla $item obyektini o methodun icine sala bilerem? ve ya bawqa hansisa yolu var start_lvl icinde hazirki menyunun subunun olub olmadigini has_sub olub olmadigini yoxlamaq?

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (11:08, 16/05/2015 ) #55413

    İçinə girmək üçün gərək bir neçə dəfə oxuyam yazılanları, amma qısaca onu deyə bilərəm ki, problem tək budursa əlavə yollardan çəkinməyin: məsələn class içində private funksiya yaratmaq və start_lvl içində ona müraciət göndərmək, və ya cari item-i transient-də saxlamaq və ya global dəyişən elan edib ona mənimsətmək və.s. əsas odur ki həll həm işi görsün, həm də performansa təsir etməsin.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Software Developer - 571 xal

E. Hacı - 560 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 411 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Bextiyar Azeroglu - 214 xal

Sistemə daxil olmuş 17362 sualdan 94%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2016