2016-04-01 16 views
0

çıkarma:wp_nav_menu filtresi, benim wordpress menüden belirli bağlantıyı kaldırmak çalışıyorum belirli bir bağlantıyı

<li class="ubermenu-item ubermenu-item-type-post_type ubermenu-item-object-page ubermenu-item-1 ubermenu-item-level-0 ubermenu-column ubermenu-column-auto" ><a class="ubermenu-target ubermenu-item-layout-default ubermenu-item-layout-text_only" href="/first/" tabindex="0"><span class="ubermenu-target-title ubermenu-target-text">First</span></a></li> 

<li class="ubermenu-item ubermenu-item-type-post_type ubermenu-item-object-page ubermenu-item-2 ubermenu-item-level-0 ubermenu-column ubermenu-column-auto" ><a class="ubermenu-target ubermenu-item-layout-default ubermenu-item-layout-text_only" href="/second/" tabindex="0"><span class="ubermenu-target-title ubermenu-target-text">Second</span></a></li> 

<li class="ubermenu-item ubermenu-item-type-post_type ubermenu-item-object-page ubermenu-item-3 ubermenu-item-level-0 ubermenu-column ubermenu-column-auto" ><a class="ubermenu-target ubermenu-item-layout-default ubermenu-item-layout-text_only" href="/third/" tabindex="0"><span class="ubermenu-target-title ubermenu-target-text">Third</span></a></li> 


function remove_link($menu) { 
    return str_replace('<a href="', '<a>', $menu); 
} 
add_filter('wp_nav_menu', 'remove_link'); 

Ben kaldırmak çalışıyorum bağlantı li elemana bağlı .ubermenu-item-3 sahiptir. Bunu nasıl yapabilirim?

+0

Herhangi bir menü yürüteç için temanızı kontrol edin ve oradan çıkarın? Ya da ubermenu eklentisini kaldırın? –

+0

Belirli kullanıcılar için silinmesi gerekiyor, böylece işlevler dosyasında anında. – ditto

+0

ebeveyn li arasındaki tüm içeriğin kaldırılmasını mı yoksa sadece bağlantıyı mı istiyorsun? – David

cevap

1

Aşağıdaki her iki sürüm. yorumları oku! Bu domdocument'e bağlıdır, çoğu php kurulumu buna sahip olacak, ancak bazı özel kurulumlar bunu yapamaz.

function remove_link($html) { 
    $dom->loadHTML($html); 
    $links= $dom->getElementsByTagName('li'); 

    foreach($links as $data){ 

     if(strpos($data->getAttribute('class'), 'ubermenu-item-3') !== false){ 

      //remove the entire li - comment out if just removing the href 
      $data->parentNode->removeChild($data); 

      //alternatively change the href as per your code (comment out if using remove the entire li) 
      //foreach($data->getElementsByTagName('a') as $as){ 
      // $as->setAttribute('href', ''); 
      //}  
     } 

    } 

    $html= $dom->saveHTML(); 

    return $html; 

} 

add_filter('wp_nav_menu', 'remove_link'); 
1

Bunun yerine wp_nav_menu_objects filter'u kullanmalısınız. Potansiyel olarak karmaşık bir dizge değiştirme veya DOM ayrıştırma kullanmanıza gerek yoktur çünkü yalnızca biçimlendirme oluşturulmadan önce menü öğelerinin dizisini filtreleyebilirsiniz.

İşte dizideki http://hookr.io/filters/wp_nav_menu_objects/

// define the wp_nav_menu_objects callback 
function filter_wp_nav_menu_objects($sorted_menu_items, $args) { 
    // make filter magic happen here... 
    return $sorted_menu_items; 
}; 

// add the filter 
add_filter('wp_nav_menu_objects', 'filter_wp_nav_menu_objects', 10, 2); 

Sadece tanımsız uygun dizinden bazı iskelet kod. Veya tam olarak bu amaçla tasarlanmış olan UberMenu Koşulları Uzantısını kullanın. http://wpmegamenu.com/conditionals

İlgili konular