Скрыть определенные элементы навигации на основе нелокального условия 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, чтобы исключить определенные пункты меню из навигации?

3

Решение

Сначала я хотел бы сказать, что я не разработчик 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

0

Другие решения

В зависимости от того, как ваша тема обрабатывает меню, вы можете просто создать 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.

0

Вы можете использовать код так, как он есть у вас. Но вместо этого, если вы перенаправляете пользователя, он просто ничего не делает ..

Код будет выглядеть примерно так:

<?php
if (!preg_match('/^192/', $_SERVER['REMOTE_ADDR'])) {
# Do Nothing
}else{
# Show Menu Item
}
?>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector