Tên menu hiển thị bằng wp_nav_menu


17

Tôi có một menu tùy chỉnh mà tôi có thể gọi tốt bằng cách sử dụng wp_nav_menu. Có cách nào để tên menu hiển thị bên trong thẻ h3 trước menu không?

Ví dụ.

<h3>My Menu Name</h3>
<nav>
<ul>
<li>Menu Item 1</li>
<li>Menu Item 2</li>
</ul>
</nav>

Câu trả lời:


15

Nếu bạn biết sên của menu, mọi thứ sẽ dễ dàng hơn, nếu không bạn có thể sử dụng chức năng này để lấy menu ở một vị trí được chỉ định.

<?php
function wpse45700_get_menu_by_location( $location ) {
    if( empty($location) ) return false;

    $locations = get_nav_menu_locations();
    if( ! isset( $locations[$location] ) ) return false;

    $menu_obj = get_term( $locations[$location], 'nav_menu' );

    return $menu_obj;
}
?>

Sau đó

//if you after the menu the menu with a specific ID / Slug
//$menu_obj =wp_get_nav_menu_object($id_slug_or_name); 

//if you after the menu at a specific location
$menu_obj = wpse45700_get_menu_by_location($location); 

echo "<h3>".esc_html($menu_obj->name)."</h3>";
//Display menu here

Hoặc, thay vì lặp lại html, bạn có thể chuyển nó như một phần của đối số cho thuộc tính items trong wp_nav_menu.

Ví dụ: để hiển thị menu tại vị trí 'chính':

$location = 'primary';
$menu_obj = wpse45700_get_menu_by_location($location ); 
wp_nav_menu( array('theme_location' => $location, 'items_wrap'=> '<h3>'.esc_html($menu_obj->name).'</h3><ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>') ); 

1
Stephen, cảm ơn vì sự phản hồi tuyệt vời. Xin lỗi để trở thành một người mới nhưng bạn có thể cung cấp mã để chuyển html làm đối số. Điều đó sẽ giải quyết mọi thứ. Cảm ơn!
csi

Xem câu trả lời được cập nhật: D
Stephen Harris

4

thay thế id 4 dưới đây bằng id của menu của bạn. nếu bạn không biết id đi vào trang menu của quản trị viên, nhấp chuột phải vào tab của menu bạn muốn lặp lại tiêu đề cho, kiểm tra elemenent và id sẽ được liệt kê dưới dạng menu = ID trong liên kết.

<?
$_menu_object = wp_get_nav_menu_object( 4 );
$nav_menu_selected_title = $_menu_object->name;
echo $nav_menu_selected_title;
?>

2

câu trả lời của stephen là tốt. nhưng tôi đã tiến một bước xa hơn:

<?php 
$location = 'footer_navigation3';
if (has_nav_menu($location)) :
    $menu_obj = get_menu_by_location($location); 
    wp_nav_menu( array( 
        'theme_location'  => $location,
        'items_wrap'=> '<strong>'.esc_html($menu_obj->name).'</strong><ul id="%1$s" class="%2$s">%3$s</ul>'
    )); 
endif;
?>

giả sử bạn đã đăng ký một vị trí chủ đề được gọi là "footer_navlation3" và gán một menu wp cho điều đó. Bây giờ đặt mã này bất cứ nơi nào bạn muốn hiển thị menu của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.