WordPress-如何在wp_nav_menu中显示指向”私人”页面的链接()
在我的WordPress网站上, 即使用户未登录(我只需要显示链接, 而无需更改谁可以查看实际内容), 我也要求在主导航中显示私有链接(通过wp_nav_menu)。
我可以在其他地方使用wp_list_pages并指定要显示的post_status(es)来执行此操作, 但看不到如何将其应用于wp_nav_menu。
这有效:
wp_list_pages(array(
'title_li'=>
'', 'child_of'=>
$page->
ID, 'post_status'=>
'published, private'
));
有办法做到这一点吗?
wp_nav_menu(array(
'menu'=>
'primary', 'theme_location'=>
'primary', 'container'=>
FALSE, 'walker'=>
new MegaMenuWalker
'depth'=>
2));
到目前为止, 我的搜索显示了使用wp_get_nav_menu_items钩子对结果进行后处理以过滤出私人页面(或草稿)的方法, 但是我还没有做相反的事情。
我想我可以执行自定义查询来以这种方式获取项目, 但这不会让我使用我的自定义沃克。
令人着迷的是wp_get_nav_menu_items($ menu, $ args)确实允许我指定post_status参数, 但是我不得不应用自己的渲染而不是能够使用Walker……除非有某种方法可以在外面使用Walker wp_nav_menu的上下文?
#1wp_nav_menu函数仅浏览所需菜单中的链接, 而不获取它们。从源代码(第270行)中可以看出, 获取链接的函数仅获得名称/ id / etc。菜单中的任何其他参数。
【WordPress-如何在wp_nav_menu中显示指向” 私人” 页面的链接()】从手册中:
显示在外观→菜单面板中创建的导航菜单。给定一个theme_location参数, 该函数将显示分配给该位置的菜单。如果不存在这样的位置或没有为其分配菜单, 则参数fallback_cb将确定显示的内容。如果没有给定theme_location参数, 该函数将显示与菜单参数给定的ID, 段或名称匹配的菜单;否则, 第一个非空菜单;否则(或者如果menu给定的菜单为空), 则输出fallback_cb参数给定的函数(默认为wp_page_menu());否则什么都没有。因此, 你需要使用WP管理面板将这些私有页面添加到菜单中, 或者创建自己的函数来获取页面并构建菜单(请注意:不是nav_walker, 因为它仅使用数据而不获取它)。
#2以下是在菜单构建器中显示” 专用页面” 的简短代码段:
add_filter( 'nav_menu_meta_box_object', 'show_private_pages_menu_selection' );
/**
* Add query argument for selecting pages to add to a menu
*/
function show_private_pages_menu_selection( $args ){
if( $args->
name == 'page' ) {
$args->
_default_query['post_status'] = array('publish', 'private');
}
return $args;
}
将其添加到自定义插件或主题functions.php中, 就可以将私有页面添加到任何菜单中。
#3基于接受的答案, 默认情况下, 私有页面不会显示在菜单构建器中。这是解决该问题的一种方法。
推荐阅读
- WordPress不断给我以下错误(警告:preg_match()[关闭])
- Ubuntu查看并修改主机名的方法#私藏项目实操分享#
- ELK部署#yyds干货盘点#
- #yyds干货盘点#线程通信
- window10共享网卡给linux服务器上网
- #yyds干货盘点#dropbear
- linux防火墙之iptables
- 算法与数据结构体系课已完结dyul
- oeasy教您玩转vim - 76 - # 组合键映射map