创建一个标题为空的菜单项

时间:2018-02-21 作者:James

在提问之前。。。我正在使用高级自定义字段在菜单项中添加一个选择字段,以选择在标题之前添加的字体很棒的图标。除了一个小问题外,编码效果很好。如果你想创建一个菜单项,说一个只有图标的主页链接,把标题留空wordpress认为如果标题是空的,最好删除菜单项。

我正在寻找一种方法来修改保存菜单功能,以防止删除包含空白标题的项目。这必须是一个可以驻留在函数中的函数。php文件,因为它将被构建到我们的高级主题中。

1 个回复
最合适的回答,由SO网友:James 整理而成

我花了很长时间才找到解决办法。我想我会在这里为任何需要这个问题答案的人发布我的代码。为了解决这个问题,我不得不使用两个函数。

第一个函数将空白标签替换为  防止删除菜单项。

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代码,以便于理解。

结束

相关推荐

Add Protocol to Custom Menus

我一直在使用tel: 自定义菜单中的链接与响应性设计相结合,为我的智能手机主题添加了“立即呼叫”按钮。它一直运行良好。一位客户刚刚要求我也添加一个“发送文本”按钮。我想我会用sms: 它似乎有可接受的设备支持。然而,当我保存菜单时,WordPress将其从URL中删除。经过研究,我得出结论,这与esc_url() 和/或wp_kses() (参见Trac ticket #18268). 我编造了以下代码,试图自己添加SMS协议并将其放入函数中。php:<?php function add_n