根据非本地IP地址条件隐藏特定的导航项 php wordpress



对于工作外联网网站,我有一个完全可以访问的网站。该网站现在也可以从外部完全访问。但是,有一些 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
}
?>

相关内容

  • 没有找到相关文章

最新更新