web-dev-qa-db-ja.com

すべてのユーザーのダッシュボードにウェルカムパネルを表示する

ダッシュボード上のウェルカムパネルを情報付きのユーザー用にカスタマイズしました。それから、「却下」ボタンを隠し、CSSを追加してウェルカムパネルを常に表示させました。 'welcome_panel'フックを使う.

これは管理者には問題なく動作しますが、編集者や作成者などの他のユーザーにはウェルカムパネルは表示されません。管理パネルが隠されているのではなく、ソースコードに含まれていません。

管理者だけでなく、すべてのユーザーにウェルカムパネルのコードを含める方法を見つける必要があります。

wp-admin/index.phpに以下が見つかりました。そのため、ユーザーがedit_theme_optionsを編集できる場合にのみ表示されます。

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

これを編集する方法やdo_action( 'welcome_panel')を呼び出す方法はありますか。ユーザーがedit_theme_optionsを編集できない場合でも

1
ptimson

これが私がそれを解決した方法です:

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

すでにご存知のとおり、そのパネルの表示条件は コアファイルにハードコードされています です。それは変更されることを意図されていません、それはあなたがおそらくそれが意図されていない何かのためにパネルを使用しようとしていることを意味します。それは批判ではありません。それはそれを難し​​くするだけです。コアファイルを編集する以外にそれを変更する方法はないと思いますし、それをお勧めしません。

あなたは他のフックでwelcome_panelアクションを実行しようと試みることができます - 例えば、これらのうちの1つ 例えば、私はそれが正しく機能するとは思わないでしょう。あなたが本当に、本当にあなたの最善の策であるすべての人のために実行するためにwelcome_panelを必要とします、しかし私は希望しません。

全員にedit_theme_options機能を与えることもできますが、それは悪い考えです。私はそれを考えて恥ずかしいです。 :)

私が言うことができることから、あなたの選択はかなり限られていて、本当に「コア編集」に煮詰められます。それは、開始するための高度なメンテナンスパスです。新しい Dashboard WidgetHelp画面 、または adminバー のように、ユーザー情報を別の場所に置くことをお勧めします。

1
s_ha_dum