Intereting Posts
создать фоновое представление содержимого WordPress с использованием настраиваемого типа сообщения Работа с несколькими значениями и обменными знаками Как удалить текст и сохранить изображение подписи с помощью функции__состояния Изменить сайт WordPress без имени пользователя и пароля? Какой клиент блогов для Windows / Linux имеет лучшую поддержку для поддержки / восстановления ваших сообщений? Сопоставление субдоменов в WordPress, чтобы создать локализованный сайт, лучший подход? Почему мои ссылки с разбивкой по страницам не работают? Изменить ссылки в комментариях пользователей Эхо пользовательские значения таксономии Post Navigation не работает в шаблоне блога – перенаправление на ту же страницу с правильным URI WP_Query и разбиение на страницы на первой странице Как заказывать сообщения, которые уже были отфильтрованы по пользовательской таксономии, по их названиям категорий? Как отлаживать, когда error_log работает не так, как ожидалось Как изменить содержимое iFrame в блоке администратора Список сообщений только под категорией, исключить контент дочерней категории

настройка определенной домашней страницы для зарегистрированных пользователей

После googling у меня есть часть кода, чтобы установить определенную страницу в качестве домашней страницы в wordpress. В коде говорится,

add_action('init', 'loginCheck'); function loginCheck() { if (is_user_logged_in()) { $page = get_page_by_title('My Account'); } else { $page = get_page_by_title('Shop'); } update_option('page_on_front', $page->ID); update_option('show_on_front', 'page'); } 

Но у меня мало соображений относительно вышеприведенного кода.

  1. По моему мнению, вышеуказанный код обновит базу данных при каждой загрузке страницы независимо от логина.
  2. Что произойдет, если два пользователя посещают сайт одновременно, где один входит в систему, а другой – нет.
  3. Есть ли лучшие способы переключения домашней страницы на основе входа? т.е. для входа в систему пользователь может получить доступ к различным страницам через меню с помощью настраиваемой домашней страницы, в то время как гостевой пользователь должен только получить доступ к определенной странице, в идеале другой genaralized общедоступной домашней странице, и если он / она пытается получить доступ к другим страницам, необходимо перенаправить на общую домашнюю страницу только.

Solutions Collecting From Web of "настройка определенной домашней страницы для зарегистрированных пользователей"

О ваших соображениях: –

  • Да, верно! Он будет обновлять страницу при каждом посещении.
  • База данных будет обновляться чаще, основываясь на том, какой пользователь делает запрос. Но не будет некорректного вывода.
  • Лучше я предлагаю использовать фильтр template_include . Назначьте статическую переднюю страницу, затем примените шаблон к этой странице, проверив, зарегистрирован ли пользователь или нет. Таким образом, вы можете отображать различные макеты / дизайн для зарегистрированных пользователей и посетителей.

См. Этот пример: –

 add_filter( 'template_include', 'home_page_template', 99 ); /** * Home page Template based on user * @param type $template * @return type */ function home_page_template( $template ) { if (!is_front_page()) { return $template; //Return if not home page } $new_template = false; if (is_user_logged_in()) { $new_template = locate_template( array( 'logged-in-users.php' ) ); } else { $new_template = locate_template( array( 'not-logged-in-users.php' ) ); } if ( !empty($new_template) ) { return $new_template ; //Only return if template exist } return $template; //Always return value from filter } 

Для остальных вещей вы можете создать два меню для зарегистрированных и гостевых пользователей и условно назвать их в заголовочном файле. Чтобы отменить доступ к некоторым страницам / сообщениям для гостевых пользователей, используйте init hook с is_user_logged_in() и временно переадресовывайте на некоторую страницу. Вы можете найти этот сайт для примера этого метода.