我正在为客户端构建一个菜单,它从顶级菜单项的页面中获取自定义字段数据并添加data-color
指向该菜单项。我的那部分没问题。
我现在的问题是data-color
从顶级菜单项到子菜单项。由于子菜单项不一定是顶级页面的子帖子/页面,因此我无法使用$item->post_parent
.
在我下一步的行动中,我在这一点上有点卡住了。这是目前为止的代码块。
function data_attribs_menu( $atts, $item, $args ) {
// check if ACF exists
if( class_exists(\'acf\') ) {
$page_section = get_field( \'page_section\', $item->object_id );
$parent_page_section = get_field( \'page_section\', $item->post_parent );
if( $args->theme_location == \'header-menu\' ) {
if( $item->menu_item_parent == 0 ) {
$atts[\'data-color\'] = $page_section;
} else {
$atts[\'data-color\'] = $parent_page_section;
}
}
}
return $atts;
}
add_filter(\'nav_menu_link_attributes\', \'data_attribs_menu\', 10, 3);
有没有办法抓住父母的
object_id
对于子菜单项?
下面是菜单当前交互方式的视频。
SO网友:mmm
我在评论中犯了两个错误
请尝试此代码
function data_attribs_menu( $atts, $item, $args ) {
// check if ACF exists
if( class_exists(\'acf\') ) {
$page_section = get_field( \'page_section\', $item->object_id );
if( $args->theme_location == \'header-menu\' ) {
if( $item->menu_item_parent == 0 ) {
$atts[\'data-color\'] = $page_section;
} else {
$parentItem = get_post($item->menu_item_parent);
$parent_page_section = get_field( \'page_section\', $parentItem->_menu_item_object_id);
$atts[\'data-color\'] = $parent_page_section;
}
}
}
return $atts;
}
add_filter(\'nav_menu_link_attributes\', \'data_attribs_menu\', 10, 3);
此代码仅在有两级菜单时有效,根据问题中的示例,它是您所需要的。