Erlaube den Zugriff auf einer Seite nur auf ein bestimmtes Mitglied

Ich versuche eine Mitgliedschaftsseite in WP zu erstellen, wo jeder Mitglied nur auf bestimmte Seiten zugreifen kann, die für ihn erstellt wurden. Ich meine, nur ein Mitglied darf Inhalte auf einer Seite sehen, während diese Seite auf andere beschränkt ist. Ich gewähre nur einem Mitglied Zugriff auf eine Seite. Ich weiß nicht, ob das mit Hilfe eines Plugins möglich ist

Solutions Collecting From Web of "Erlaube den Zugriff auf einer Seite nur auf ein bestimmtes Mitglied"

Das gleiche Konzept wie bei Dominic (keine Notwendigkeit eines Mitglieder-Plugins), aber erweitert, um eine Meta-Box zu verwenden, die nur für Administratoren sichtbar ist, mit einer Dropdown-Liste mit allen Benutzern (mit Ausnahmen).

Code geliehen und von dieser Antwort angepasst. Setzen Sie in 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 ""; } 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"] ); } 

Zum Überprüfen von Berechtigungen funktioniert dies außerhalb der Schleife in 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; } } 

Ich würde auch empfehlen, Plugins wie bezahlte Mitgliedschaften pro (kostenlos), Premise Landing Pages (kostenpflichtig) auszuprobieren und Inhalte pro (bezahlt) zu beschränken. All dies könnte Ihr Problem lösen.

Sie können die IDs zulässiger Benutzer einem benutzerdefinierten Feld auf bestimmten Seiten hinzufügen. Verwenden get_current_user_id() dann get_current_user_id() und get_current_user_id() Sie, ob es eine Übereinstimmung gibt, bevor Sie den Inhalt get_current_user_id() .