Intereting Posts
В чем разница между $ post_id и get_the_ID ()? Более чистый способ определения нескольких переменных для is_page_template () Использовать случайную тему Относительная безопасность различных версий WordPress Тип постоянной позиции и таксономия. Ошибка: не удалось импортировать тег / сообщение Как добавить категорию и подкатегорию в wordpress URL Как изменить постоянные ссылки после окончания моего сайта WordPress? Как удалить _wp_http_referer из URL-адреса при использовании WP_List_table? Запрос почты из многоузловой сети Плагин Timber (Twig) не отображает сообщения пользовательского типа на индексной странице Пользовательские типы сообщений и иерархия сложного содержимого Редактирование ссылок в нижнем колонтитуле WordPress Темы с зашифрованным кодом Base64? Как получить список флажков категории CPT и показать сообщение о выбранных (умнож.) Флажках через ajax? Как обновить размеры пользовательских изображений?

Разрешить доступ на странице только к определенному члену

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

Solutions Collecting From Web of "Разрешить доступ на странице только к определенному члену"

Та же концепция, что и Dominic (нет необходимости в плагине членов), но расширена, чтобы использовать Meta Box, видимый только для Admins, с выпадающим списком со всеми пользователями (с исключениями).

Код, заимствованный и адаптированный из этого ответа . Вставьте functions.php :

 // List Users add_action( 'admin_init', 'wpse_33725_users_meta_init' ); // Save Meta Details add_action( 'save_post', 'wpse_33725_save_userlist' ); function wpse_33725_users_meta_init() { if( current_user_can( 'administrator' ) ) add_meta_box( 'users-meta', 'Authorized User', 'wpse_33725_users_meta_box', 'page', 'side', 'high' ); } function wpse_33725_users_meta_box() { global $post; $custom = get_post_custom( $post->ID ); $users = $custom["users"][0]; // prepare arguments $user_args = array( // exclude users from the list using an array of ID's 'exclude' => array(1), // order results by display_name 'orderby' => 'display_name' ); // Create the WP_User_Query object $wp_user_query = new WP_User_Query($user_args); // Get the results $authors = $wp_user_query->get_results(); // Check for results if ( !empty($authors) ) { // Name is your custom field key echo "<select name='users'>"; echo '<option value=0>All</option>'; // loop trough each author foreach ( $authors as $author ) { $author_id = get_post_meta( $post->ID, 'users', true ); $author_selected = ( $author_id == $author->ID ) ? 'selected="selected"' : ''; echo '<option value='.$author->ID.' '.$author_selected.'>'.$author->user_nicename.'</option>'; } echo "</select>"; } else { echo 'No authors found'; } } function wpse_33725_save_userlist() { global $post; if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return $post->ID; } update_post_meta( $post->ID, "users", $_POST["users"] ); } 

Для проверки разрешений это работает вне цикла в page.php :

 $the_user = get_post_meta( $wp_query->post->ID, 'users', true ); if( '0' == $the_user || empty( $the_user ) ) { echo "this is a public page"; } else { if( get_current_user_id() == $the_user ) echo "this page is for you"; else { // NOTHING TO SEE, GO TO FRONT PAGE wp_redirect('/'); header("Status: 302"); exit; } } 

Я также рекомендовал бы проверять плагины, такие как платные членские взносы pro (бесплатно), Помещения Landing Pages (оплачиваются) и ограничивать контент pro (оплачивается). Все это может решить вашу проблему.

Вы можете добавить идентификаторы разрешенных пользователей в настраиваемое поле на определенных страницах. Затем используйте get_current_user_id() и get_current_user_id() ли это показателю перед показом содержимого.