对于工作外联网网站,我有一个完全可以访问的网站。该网站现在也可以从外部完全访问。但是,有一些 1 级导航项的子菜单项是机密的,只能在工作环境中使用。
在php中,我知道如何根据IP地址将网站访问者重定向到受限制的页面。但这是一个原始的解决方案,会中断用户体验。我也宁愿不对页面进行密码保护,因为这也需要用户在工作环境中填写该密码。
这是我用于重定向的代码:
<?php
if (!preg_match('/^192/', $_SERVER['REMOTE_ADDR'])) {
header('HTTP/1.1 403 Forbidden');
header('Location: notallowed.php');
exit;
}
?>
我想知道,如何将此逻辑应用于wp_nav以从导航中排除特定菜单项?
首先我想说我不是WordPress开发人员。 也就是说,据我所知,您应该能够为您的导航菜单使用自定义助行器。 在您的自定义助行器中,您可以根据上面列出的 IP 代码有条件地添加或删除您不想显示/不想显示的导航选项。 但是,您仍然希望将该代码保留在受限制的页面中,因此,如果链接在外部共享,他们仍然无法访问。
限制 IP 地址的更简洁方法是使用 .htaccess。 您应该能够将其配置为将某些网页限制为仅本地访问。 再加上定制的助行器将是最干净的。
http://premium.wpmudev.org/blog/limit-access-login-page/
一些自定义助行器教程:
https://wordpress.stackexchange.com/questions/14037/menu-items-description-custom-walker-for-wp-nav-menu/14039#14039
http://code.tutsplus.com/tutorials/understanding-the-walker-class--wp-25401
根据您的主题处理菜单的方式,您可以简单地制作 2 个菜单并根据 IP 地址显示它们
<?php if (!preg_match('/^192/', $_SERVER['REMOTE_ADDR'])): ?>
<?php wp_nav_menu('menu=full'); ?>
<?php else: ?>
<?php wp_nav_menu('menu=simple'); ?>
<?php endif; ?>
同样只有这样,仍然可以使用直接 URL 找到页面。如果你想防止这种情况,你应该看看.htaccess文件的强大功能。
自己的方式使用代码。但是,如果重定向用户,则什么都不做。.
代码如下所示:
<?php
if (!preg_match('/^192/', $_SERVER['REMOTE_ADDR'])) {
# Do Nothing
}else{
# Show Menu Item
}
?>