Intereting Posts
Исключить категорию сообщений в шаблоне автора Пользовательский метабокс не отображает данные мультиселекта в режиме редактирования Почему я не могу направить пользователя в раздел моего блога без входа? Измените выход wp_nav_menu очень определенным образом? Отредактируйте вывод wp_widget_rss_output () Содержимое gform_after_submission появляется сразу после <body>, а не в теле сообщения Пользовательский запрос WP из meta_value, хранящийся в виде сериализованного массива Есть ли способ интегрировать WordPress с Imgur для хостинга изображений? Использование настраиваемых параметров URL-адреса на странице Установите флажок, как указано по умолчанию на странице параметров. Как создать пользовательский вложенный цикл в bbPress (плагин WordPress + bbPress) Как вызвать wp_list_comments () вне шаблона комментариев? Копирование таблиц базы данных в новую базу данных Получить изображения из сообщения Добавление опции в короткий код

Измените шаблон, когда пользователь не войдет в систему, используя фильтр page_template (он не работает)

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

function restrict_access_to_unlogged_users($template) { global $post, $pagename; $new_template = get_stylesheet_directory() . '/need-login.php'; return $new_template; } add_filter( 'page_template', 'restrict_access_to_unlogged_users', 20 ); 

У меня есть файл шаблона под названием «need-login.php» в моей папке с дочерними темами, однако моя веб-страница печатает большой пробел на экране.

Что я делаю плохо?

С уважением.

Solutions Collecting From Web of "Измените шаблон, когда пользователь не войдет в систему, используя фильтр page_template (он не работает)"

Ваш код на самом деле не выполняет проверку «пользователь вошел в систему», и вы не используете пару global импортируемых вами.

 function restrict_access_to_unlogged_users($template) { if (!is_user_logged_in()) { $template = get_stylesheet_directory() . '/need-login.php'; } return $template; } add_filter( 'page_template', 'restrict_access_to_unlogged_users', 20 ); 

И вы можете сделать это более глобально с помощью template_include .

 function restrict_access_to_unlogged_users($template) { if (!is_user_logged_in()) { $template = get_stylesheet_directory() . '/need-login.php'; } return $template; } add_filter( 'template_include', 'restrict_access_to_unlogged_users', 20 ); 

Если вы получаете белый экран почти наверняка, потому что ваш путь неправильный, и у вас нет отладки . Пытаться:

 function restrict_access_to_unlogged_users($template) { if (!is_user_logged_in()) { $template = get_stylesheet_directory() . '/need-login.php'; } var_dump($template); die; } add_filter( 'page_template', 'restrict_access_to_unlogged_users', 20 ); 

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

Если вы это сделаете, проверьте разрешения на ваш .php файл и убедитесь, что он доступен для чтения сервером.