如何将第三级子菜单添加到WordPress管理菜单

时间:2016-05-18 作者:Moshe

是否有一个功能、操作或过滤器,我可以用来将第三级下拉菜单添加到WordPress管理菜单。

例如,现在在侧栏菜单中,有一个帖子菜单,在帖子下有编辑帖子、添加新帖子、类别和标签的子菜单。页面也有类似的功能。

我想做的是添加一个名为“内容”的菜单项,并将其放置在内容帖子、页面和我的自定义内容类型下面,以及每个条目下面的相关子菜单(编辑、添加等)。

我想通过我创建的自定义插件来实现这一点。问题是,我找不到有关如何添加第三级子菜单的任何信息。

有什么想法吗?

谢谢

2 个回复
最合适的回答,由SO网友:Karthikeyani Srijish 整理而成

否,无法在管理面板中创建第三级菜单。如果你看看add_submenu_page, 您需要提到父段塞名称。For eg:

add_menu_page ( \'Test Menu\', \'Test Menu\', \'read\', \'testmainmenu\', \'\', \'\' );
add_submenu_page ( \'testmainmenu\', \'Test Menu\', \'Child1\', \'read\', \'child1\', \'\');
的第一个参数add_submenu_page 将是父段塞名称。所以你可能认为我们可以写child1 作为父段塞名称创建第三级。Eg:

add_submenu_page ( \'child1\', \'Test Menu\', \'Child2\', \'read\', \'child2\', \'\');
但这行不通。请查看本节中的参数定义和源部分link. 它明确指出,您只能使用\'main menu of the plugin\' 或者file name 中的WordPress插件的parent slug name. 因此,在管理面板中不可能多次创建子菜单。但是,您可以在前端创建多个子菜单。要了解有关在前端创建菜单和子菜单的更多信息,refer

SO网友:Olekk

我自己用JS写的。这只是一个项目,我不想在上面花费太多时间,所以你必须根据个人需要进行调整;)

它隐藏选定的菜单元素并创建一个按钮来切换它们。

您可以将其添加到文件/wp admin/菜单标题的末尾。php

<script>
    // Here is list of classes of chosen menu elements you want to toggle - li.menu-icon-slug
    let my_products = document.querySelectorAll("li.menu-icon-okna, li.menu-icon-drzwi, li.menu-icon-bramy_garazowe");
    
    my_products.forEach(prod => {
        prod.style.backgroundColor = "#283338";
    })
    
    // "Produkty" is a text on a toggling button, change it
        let my_button = jQuery(\'<li class="menu-top"><a class="menu-top"><div class="wp-menu-image dashicons-before dashicons-admin-post"></div><div class="wp-menu-name">Produkty</div></a></li>\')[0];

        document.querySelector("ul#adminmenu").insertBefore(my_button, my_products[0]);

    function toggleProducts() {
        my_products.forEach(prod => {
            if(prod.style.display != "none") prod.style.display = "none";
            else prod.style.display = "block";
        })
    }
    toggleProducts();

    my_button.querySelector("a").addEventListener("click", toggleProducts);

</script>

。。没有jQuery:

<script>
    // Here is list of classes of chosen menu elements you want to toggle - li.menu-icon-slug
    let my_products = document.querySelectorAll("li.menu-icon-okna, li.menu-icon-drzwi, li.menu-icon-bramy_garazowe");

    my_products.forEach(prod => {
        prod.style.backgroundColor = "#283338";
    })

        let prod_li = document.createElement("li");
        prod_li.classList.add("menu-top");

        let prod_a = document.createElement("a");
        prod_a.classList.add("menu-top");

        let prod_div1 = document.createElement("div");
        prod_div1.classList.add("wp-menu-image","dashicons-before","dashicons-admin-post")

        let prod_div2 = document.createElement("div");
        prod_div2.classList.add("wp-menu-name");

        // Text on a button:
        prod_div2.appendChild(document.createTextNode("Produkty"));

        prod_a.append(prod_div1, prod_div2);
        prod_li.append(prod_a);

        document.querySelector("ul#adminmenu").insertBefore(prod_li, my_products[0]);

    function toggleProducts() {
        my_products.forEach(prod => {
            if(prod.style.display != "none") prod.style.display = "none";
            else prod.style.display = "block";
        })
    }
    toggleProducts();

    prod_a.addEventListener("click", toggleProducts);

</script>

相关推荐

WP-ADMIN:“对不起,您不能访问此页面。”

两周后不使用我们的WP站点,登录/wp-admin/ 出现白屏错误:抱歉,不允许您访问此页面。我有:重命名plugins 到plugins.temp.通过phpMyAdmin创建了一个新的管理员用户。新用户已user_meta 的作用a:1:{s:13:"administrator";s:1:"1";}.</已重命名themes 到themes.temp.</删除核心WordPress文件,并替换为新上载的文件</已替换.htaccess 使用默认