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基于接受的答案, 默认情况下, 私有页面不会显示在菜单构建器中。这是解决该问题的一种方法。

    推荐阅读