web-dev-qa-db-fra.com

Afficher le panneau de bienvenue sur le tableau de bord pour chaque utilisateur

J'ai personnalisé le panneau de bienvenue du tableau de bord pour les utilisateurs avec des informations. J'ai ensuite caché le bouton "Ignorer" et ajouté du code CSS pour que le panneau de bienvenue soit toujours visible. Utilisation du hook 'welcome_panel'.

Cela fonctionne bien pour les administrateurs, mais le panneau de bienvenue ne s'affiche pas pour les autres utilisateurs tels que les éditeurs et les auteurs. Ce n'est pas que le panneau d'administration est caché, il n'est pas inclus dans le code source.

Je dois trouver un moyen d'inclure le code du panneau de bienvenue pour chaque utilisateur, pas seulement les administrateurs.

Je viens de trouver ce qui suit dans wp-admin/index.php. Donc, il ne montrera que si l'utilisateur peut edit_theme_options.

<?php if ( has_action( 'welcome_panel' ) && current_user_can( 'edit_theme_options' ) ) :

Existe-t-il un moyen de le modifier ou d’appeler do_action ('welcome_panel'); même si l'utilisateur ne peut pas edit_theme_options?

1
ptimson

Voici comment je l'ai résolu:

Dans functions.php

// Custom Dashboard
function my_custom_dashboard() {
    $screen = get_current_screen();
    if( $screen->base == 'dashboard' ) {
        include 'admin/dashboard-panel.php';
    }
}
add_action('admin_notices', 'my_custom_dashboard');

dashboard-panel.php

<!-- Hide Old Wrap with CSS -->
<style type="text/css">
div#wpcontent div.wrap {
    display: none;
}
div#wpcontent div.my-dashboard {
    display: block;
}
</style>

<!-- New Wrap with custom welcome screen-->
<div class="wrap mjp-dashboard">
    <h2>Dashboard</h2>

    <div id="welcome-panel" class="welcome-panel">
        <?php wp_nonce_field( 'welcome-panel-nonce', 'welcomepanelnonce', false ); ?>
        <?php //do_action( 'welcome_panel' ); ?>
        <div class="mjp-welcome-content">
            <h3>Welcome, <?php echo $name; ?></h3>
            <p class="about-description">Your role is...</p>
            <div class="welcome-panel-column-container">
                <div class="welcome-panel-column">

                </div>
            </div>
        </div>
    </div>

    <div id="dashboard-widgets-wrap">

    <?php wp_dashboard(); ?>

    <div class="clear"></div>
    </div><!-- dashboard-widgets-wrap -->

</div><!-- wrap -->
3
ptimson

Comme vous l'avez déjà découvert, les conditions d'affichage de ce panneau sont codées en dur dans un fichier core . Cela ne doit pas être changé, ce qui signifie que vous essayez probablement d'utiliser le panneau pour quelque chose pour lequel il n'est pas destiné. Ce n'est pas une critique. Cela rend juste difficile. Je ne vois pas de moyen de changer cela, sauf en éditant un fichier core, et je ne le conseille pas.

Vous pouvez essayer d'exécuter l'action welcome_panel sur un autre point d'ancrage, comme l'un de ceux-ci , par exemple, mais je ne m'attendrais pas à ce qu'elle fonctionne correctement. Si vous avez vraiment, vraiment besoin du welcome_panel pour courir pour tout le monde, c'est votre meilleur pari, mais je ne serais pas optimiste.

Vous pouvez également donner à chacun la capacité edit_theme_options, mais c'est une mauvaise idée. J'ai honte d'y avoir pensé. :)

D'après ce que je peux dire, vos options sont assez limitées et se résument en "édition de base". C’est un chemin très exigeant en termes de maintenance. Je vous conseillerais de placer vos informations utilisateur ailleurs, comme dans un nouveau widget de tableau de bord , dans un Aide écran ou dans la barre d’administration .

1
s_ha_dum