Php Wordpress-如何显示到';私人';wp_导航菜单中的页面?
在我的WordPress站点中,我需要在主导航中显示Php Wordpress-如何显示到';私人';wp_导航菜单中的页面?,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,在我的WordPress站点中,我需要在主导航中显示私有链接(通过wp\u nav\u菜单),即使用户没有登录(我只需要显示链接,而不需要更改谁可以查看实际内容) 我可以在其他地方执行此操作,使用wp\u列表页面和指定要显示的post\u状态,但我看不到如何将其应用于wp\u导航菜单 这项工作: wp_列表_页面(数组)( “title_li'=>”, 'child_of'=>$page->ID, “发布状态”=>“已发布,私有” )); 有没有类似的方法 wp\u导航菜单(阵列)( '菜单'
私有
链接(通过wp\u nav\u菜单
),即使用户没有登录(我只需要显示链接,而不需要更改谁可以查看实际内容)
我可以在其他地方执行此操作,使用wp\u列表页面和指定要显示的post\u状态,但我看不到如何将其应用于wp\u导航菜单
这项工作:
wp_列表_页面(数组)(
“title_li'=>”,
'child_of'=>$page->ID,
“发布状态”=>“已发布,私有”
));
有没有类似的方法
wp\u导航菜单(阵列)(
'菜单'=>'主',
“主题位置”=>“主”,
'container'=>FALSE,
“walker”=>新MegaMenuWalker
‘深度’=>2);
到目前为止,我的搜索显示了一系列使用wp\u get\u nav\u menu\u items
hook对结果进行后期处理以过滤出私人页面(或草稿)的方法,但我还没有找到相反的方法
我想我可以做一个自定义查询,以这种方式获取项目,但这不允许我使用自定义walker
诱人的是,wp\u get\u nav\u menu\u items($menu,$args)
允许我指定post\u status参数,但是我只能应用自己的渲染,而不能使用walker。。。除非有某种方法可以在wp\u nav\u菜单
?的上下文之外使用助行器,wp\u nav\u菜单
功能只遍历所需菜单中的链接,而不获取它们。从源代码()中可以看出,获取链接的函数只获取菜单的名称/id/等,而不获取任何其他参数
从:
显示在外观中创建的导航菜单→ 菜单面板
给定主题位置参数,函数将显示菜单
分配到那个位置。如果不存在这样的位置或没有菜单
分配给它时,参数fallback_cb将确定什么是
显示
如果未指定主题位置参数,则显示该函数
- 与菜单参数给定的ID、slug或名称匹配的菜单李>
- 否则,第一个非空菜单;否则(或如果菜单已给出
“按”菜单为空),由回退\u cb给出的函数输出
参数(默认情况下为wp_页面_菜单())李>
- 否则什么也没有
因此,您需要使用WP管理面板将这些私人页面添加到菜单中,或者创建一个自己的函数来获取页面并构建菜单(请注意:不是一个nav_walker
,因为它只使用数据而不获取数据)。基于已接受的答案,默认情况下,菜单生成器中不会显示私人页面 以下是一个简短的片段,用于显示菜单生成器中的私人页面:
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
,您将能够将私人页面添加到任何菜单中。谢谢-如果我手动将链接插入菜单,我将看到它的作用。“我的菜单”当前设置为检索所需深度的所有子菜单。一般来说,我会手动配置顶层菜单,但将其留给子菜单进行排序(否则,您将不得不整理整个内容,这是一个拖拽)。是否有任何干净的方法来执行您自己的数据检索(即绕过任何查询提要wp_nav_菜单),然后使用walker呈现项目?是的,手动插入导航的页面确实以这种方式显示。手动操作有点痛苦,但总比什么都不做要好。谢谢