web-dev-qa-db-fra.com

Comment créer des pages utilisateur spécifiques à l'utilisateur?

L'objectif est qu'un site proposé permette aux clients de se connecter et d'afficher une page ADMIN privée et spécifique à un client, PAS une page d'accueil (bien que cela soit beaucoup plus facile à réaliser).

Cette page afficherait la méta de l'utilisateur et le contenu que l'administrateur du site pourrait ajouter ad hoc.

Je suis confiant de pouvoir créer l’élément de menu, la page et de les renseigner avec des méta d’utilisateurs. Ma compréhension semble échouer s’agissant de rendre cette page ADMIN privée, client par client, et la façon par laquelle d’ajouter du contenu à ces pages pages par l'administrateur.

Tous les pointeurs pour que je puisse mieux comprendre, ou même des plugins ayant en partie ces capacités seraient grandement appréciés.

Merci

John

2
John

Vous pouvez ajouter une nouvelle page en utilisant add_(sub)menu_page(); . WordPress est assez gentil dans ce cas et offre une multitude de points d'ancrage, de filtres et de fonctions API de niveau supérieur qui vous aident à vous en sortir.

Utilisons simplement add_users_page(); et accrochons-nous dans admin_menu.

Exemple de plugin

Il ajoute une page d'administration qui a le user_login comme slug.

Il suffit de déposer ceci dans votre dossier de plugins et de le tester pour voir si c'est ce que vous cherchez.

<?php
! defined( 'ABSPATH' ) AND exit;
/* Plugin Name: (#66004) »kaiser« Add private User admin page */

// Add the admin page
function wpse66004_add_users_page()
{
    global $current_user;

    add_users_page(
        // $page_title
         'Your data'
        // $menu_title
        ,'Private Page'
        // $capability
        ,'read'
        // $menu_slug
        ,$current_user->user_login
        ,'wpse66004_render_users_page'
    );
}
add_action( 'admin_menu', 'wpse66004_add_users_page' );

// Render the users private admin page
function wpse66004_render_users_page()
{
    global $current_user;

    if ( ! current_user_can( 'read', $current_user->ID ) )
        return;

    echo "<h1>Hello World!</h1><p>And, of course, hello {$current_user->display_name} too!</p>";
}
2
kaiser