Intereting Posts
перехватить загруженный фильтр изображения jQuery ajax call вызывает HTTP 302 Классифицировать теги wordpress Получить URL-адрес для перенаправления с использованием WP_remote_post Удаление строк в представлении «Управление сообщениями / страницами» Массовое редактирование текста пользовательского отрывка в WordPress Как я могу скрыть, что я использую WordPress (с общим кэшем W3) Добавление несвязанного пространства в пользовательскую функцию Как я могу аутентифицировать учетные данные пользователя для экземпляра WordPress? Ошибка загрузки изображений Как создать пользовательские таблицы в WordPress с помощью моего собственного плагина? Фильтровать пользовательский тип сообщения в Admin Панель избранных изображений отсутствует в пользовательском типе сообщений в WordPress 3.2 Примечание. Неопределенный индекс: host в /var/www/html/wp-includes/canonical.php в строке 445 Можете ли вы управлять несколькими доменными именами из одной многопроцессорной сети WordPress?

Нажатие кнопки боковой панели при переадресации пользователя вместо этого отображает ее

в моей сети у меня есть кнопка (.x-btn.widgetbar), которая отображает раздел виджетов в верхнем правом углу, как в этом примере .

Я изменил значок для изменения в зависимости от того, зарегистрирован ли пользователь или нет, я хотел бы, чтобы пользователь не перешел на страницу входа в систему, а не отображал виджет.

Я новичок в этом, и я не знаю, с чего начать, я консультировался на нескольких форумах, и я думаю, что мог найти код, но я не знаю, какой файл редактировать, я пробовал несколько недель, но могу не извиняйтесь заранее за запрос.

Я пробую эту функцию в functions.php, но не работает.

function wp_redirect_NotLogin () { if( isset($_POST['x-btn-widgetbar']) && ! is_user_logged_in() ) { wp_redirect( home_url( '/register/' ) ); exit(); } } 

Solutions Collecting From Web of "Нажатие кнопки боковой панели при переадресации пользователя вместо этого отображает ее"

когда вам нужно взаимодействие между клиентской стороной и сервером, вы должны использовать ajax.

я думаю, что эта ссылка будет очень полезна для вас 🙂 Поместите это в свой javascript

 var data = { action: 'is_user_logged_in' }; jquery.('.x-btn-widgetbar').on('click',function(){ jQuery.post(ajaxurl, data, function(response) { if(response == 'yes') { // user is logged in, do your stuff here } else { // user is not logged in, show login form here window.location = <login url here >; } }); }); 

поместите это в свои функции. php

 function ajax_check_user_logged_in() { echo is_user_logged_in()?'yes':'no'; die(); } add_action('wp_ajax_is_user_logged_in', 'ajax_check_user_logged_in'); add_action('wp_ajax_nopriv_is_user_logged_in', 'ajax_check_user_logged_in'); 

Обновление № 1 26-9-2017

и если вы хотите, чтобы виджет-панель спряталась, вы можете использовать этот jquery:

 jquery('.x-widgetbar').hide(); 

или

 jquery('.x-widgetbar').css({display:'none'}); 

или simplay поместите это в * .css файл:

 .x-widgetbar{display:'none'} 

обновление № 2 26-9-2017

если хотите только скрыть виджетную панель, не скрывая кнопку x, вы можете заменить .x-widgetbar на .x-widgetbar-inner

просто проверяя тело для входа в класс

 if( jQuery('body').hasClass('logged-in') ) { // do something } 

Спасибо всем за вашу помощь, Ibrahim youre great !!

Наконец, я получил его, чтобы работать так, как я хотел, поэтому я закрываю сообщение и оставляю то, что сработало для меня, если кто-то может в какой-то момент воспользоваться этим.

Я пытаюсь с кодом, который вы предоставили мне в Javascript:

 var data = { action: 'is_user_logged_in' }; jQuery('.x-btn-widgetbar').on('click', function() { jQuery.post(ajaxurl, data, function(response) { if(response == 'yes') { // user is logged in, do your stuff here } else { // user is not logged in, show login form here jQuery('.x-widgetbar').hide(); window.location.href='https://website.com/login'; } }); }); 

И это в functions.php:

 function ajax_check_user_logged_in() { echo is_user_logged_in()?'yes':'no'; die(); } add_action('wp_ajax_is_user_logged_in', 'ajax_check_user_logged_in'); add_action('wp_ajax_nopriv_is_user_logged_in', 'ajax_check_user_logged_in'); 

Этот код делает именно то, что я хотел, но у меня была небольшая задержка в ответе, потребовав несколько секунд для перенаправления и отправки предупреждения, которое я не добавил в код.

Я пробовал, что Самуэль и Партхави (большое спасибо!) Написал и поместил этот код в Javascript:

 jQuery('.x-btn-widgetbar').on('click', function() { if(jQuery('body').hasClass('logged-in') ) { } else { jQuery('.x-widgetbar').hide(); window.location.href='https://website.com/login'; } }); 

С этим кодом поведение одинаковое и работает хорошо, но ответ быстрее и предотвращает небольшие задержки.

Если вы видите какой-то способ отладки кода или увидеть что-то, что поможет мне избежать проблем, я был бы признателен, так как я не эксперт в javascript.

Заранее благодарю за вашу помощь, я надеюсь, что все будет хорошо для вас.