Tôi hiện đang sử dụng một walker tùy chỉnh để tùy chỉnh đầu ra wp_nav_menu()
và tôi đang cố gắng thêm thông tin bổ sung vào các <a>
thẻ.
Những gì tôi muốn đầu ra cho mỗi liên kết menu trông giống như:
<a class="boxPAGEID" href="#">About Me Page</a>
Trong trường hợp PAGEID
là ID của trang tôi đang liên kết đến.
Lý do là vì tôi đang phát triển một chủ đề mở nội dung trang trong hộp đèn, được kích hoạt bởi lớp trong thẻ.
Dưới đây là mã của trình đi bộ tùy chỉnh trong functions.php
tệp của tôi (sau mã tôi sẽ chỉ đến khu vực tôi gặp sự cố):
class description_walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth, $args)
{
global $wp_query;
$pageid = $wp_query->post->ID;
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
$class_names = ' class="'. esc_attr( $class_names ) . '"';
$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . '#' .'"' : '';
$prepend = '<strong>';
$append = '</strong>';
$description = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : '';
if($depth != 0)
{
$description = $append = $prepend = "";
}
$item_output = $args->before;
$item_output .= '<a'. $attributes . 'class="box' . $pageid . '"' .'>';
$item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
$item_output .= $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
if ($item->menu_order == 1) {
$classes[] = 'first';
}
}
}
Về cuối là một vài dòng bắt đầu bằng $item_output
. Dòng thứ hai là nơi tôi đang cố gắng tạo ID trang:
$item_output .= '<a'. $attributes . 'class="box' . $pageid . '"' .'>';
Trường hợp $pageid
theo:
global $wp_query;
$pageid = $wp_query->post->ID;
Điều này mang lại cho tôi một ID cố định duy nhất cho tất cả các liên kết được tạo.
Ngoài ra, thay vì $pageid
tôi đã thử sử dụng $item->ID
, nhưng điều đó đã cho tôi ID của mục menu thay thế.
Bất kỳ đề xuất?