我花了很长时间才找到解决办法。我想我会在这里为任何需要这个问题答案的人发布我的代码。为了解决这个问题,我不得不使用两个函数。
第一个函数将空白标签替换为
防止删除菜单项。
add_action(\'wp_update_nav_menu\', \'blank_menu_items\');
function blank_menu_items($nav_menu_selected_id) {
$navmenudata = json_decode(stripslashes($_POST[\'nav-menu-data\']),true);
$k=0;
foreach((array) $navmenudata as $data){
if(
isset($data[\'name\']) &&
isset($data[\'value\']) &&
strpos($data[\'name\'], \'menu-item-title\') !==false
){
if(trim($data[\'value\']) == \'\'){
$data[\'value\'] = \' \';
$navmenudata[$k] = $data;
}
}
$k++;
}
if(isset($_POST[\'menu-item-title\'])){
$k=0;
foreach($_POST[\'menu-item-title\'] as $key => $value){
if(trim($value) == \'\'){
$value = \' \';
$_POST[\'menu-item-title\'][$key] = $value;
}
$k++;
}
}
}
第二个函数只是删除
渲染菜单时。
add_filter(\'wp_nav_menu_objects\', \'blank_menu_display\', 10, 2);
function blank_menu_display( $items, $args ){
foreach( $items as &$item ) {
$item->title = str_replace(\' \',\'\',$item->title);
}
return $items;
}
这些是基本函数,我没有包括ACF代码,以便于理解。