我已经开始编写一个插件,允许管理员选择特定页面并将其设置为可见only to logged-in users; 插件可以选择将限制应用于all child pages 也当站点访问者试图查看这些页面时,他们会被重定向到登录页面。
到目前为止,一切顺利。这一切都可以做到这一点,并且复制了我在现有插件中看到的功能。
然而,我还想做的是automatically remove all of those pages (including child pages, where specified) from the front-end site\'s menus. 除非您登录,否则我根本不想让它们可见。
我见过一些解决方案,人们可以创建两个菜单,并根据登录状态在它们之间切换,但这是我不想做的额外步骤。
我想我可以通过在插件代码中为“wp\\u nav\\u menu\\u items”添加一个过滤器或操作挂钩来实现这一点,但我还没有成功。
有什么想法吗?
ThanksPhil公司
其他详细信息(问题的较小部分):
下面是我的插件中的一些代码,我正试图使用这些代码连接到菜单项中:
add_filter(\'wp_nav_menu_items\',\'ppa_filter_visible_menus\');
function ppa_filter_visible_menus($nav) {
die("filter menus");
}
我的问题是没有调用ppa\\u filter\\u visible\\u菜单。
SO网友:Cid Ubaid
一个简单的解决方案是CSS
<!-- HIDES MENU ITEM IF THE USER IS NOT LOGGED IN -->
<?php if (is_user_logged_in()){
echo "";}
else {
echo "<style type=\'text/css\'>
.menu-item-58 {display:none;}
</style>";
};
?>
但是如果你想把它编码下来,请查看这个插件的源代码
http://wordpress.org/extend/plugins/if-menu/ -- 这对你有很大帮助。
而如果您只需要一个编码答案-一个简单的答案-请替换标题
<ul>
<?php wp_list_pages(); ?>
</ul>
使用条件语句
if user not logged in
show
<ul>
<?php wp_list_pages(\'exclude=17,38\' ); ?>
</ul>
其中exlude是您不希望未登录用户看到的页面id。
使用else command向登录用户显示所有菜单时
else
<ul>
<?php wp_list_pages(); ?>
</ul>
希望这对你有帮助。让我们了解最新情况。