ウィジェットの非表示・追加
ダッシュボードの次のウィジェットを非表示にします。
・概要
・アクティビティ
・クイックドラフト
・WordPress ニュース(管理者以外)
・「ようこそ」
次のウィジェットを追加します。
・最近の投稿(投稿と固定ページ)
・承認待ち(管理者・編集者)
「承認待ち」には、承認機能があります。
コード
// -------------------------------- // ウィジェットの非表示・追加 // -------------------------------- function hk_functions_dashboard_widget() { remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' ); // 概要 remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' ); // アクティビティ remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); // クイックドラフト remove_action( 'welcome_panel', 'wp_welcome_panel' ); // 「ようこそ」 // 管理者以外 if ( ! current_user_can('administrator') ) remove_meta_box( 'dashboard_primary', 'dashboard', 'side' ); // WordPress ニュース // 管理者・編集者 「承認待ち」追加 if (( current_user_can('administrator') ) || ( current_user_can('editor') )) wp_add_dashboard_widget( 'hk_functions_dashboard_pending', '承認待ち', 'hk_functions_dashboard_pending' ); // 「最近の投稿」追加 wp_add_dashboard_widget( 'hk_functions_dashboard_activity', '最近の投稿', 'hk_functions_dashboard_activity' ); return; } add_action( 'wp_dashboard_setup', 'hk_functions_dashboard_widget' ); // 最近の投稿 function hk_functions_dashboard_activity() { global $post; $user_id = get_current_user_id(); $query_args = array( 'post_type' => array( 'post', 'page' ), 'orderby' => 'modified', 'order' => 'DESC', 'posts_per_page' => 10, 'author' => $user_id, ); $posts = new WP_Query( $query_args ); if ( $posts->have_posts() ) { echo '<div class="hk_dashboard">'."\n"; echo '<table>'."\n"; echo ' <tbody>'."\n"; echo ' <tr>'."\n"; echo ' <th class="hk_nowrap">日付</th>'."\n"; echo ' <th class="hk_nowrap">状態</th>'."\n"; echo ' <th>タイトル</th>'."\n"; echo ' </tr>'."\n"; while ( $posts->have_posts() ) { $posts->the_post(); // 更新日 $modified_date = get_the_modified_date('Y/m/d'); $modified_dates = explode( '/', $modified_date ); $modified_date = $modified_dates[0].'年'.$modified_dates[1].'月'.$modified_dates[2].'日'; // タイトル if ( isset( $post->post_title ) ) { $post_title = $post->post_title; if ( $post_title == '' ) $post_title = '(タイトルなし)'; } else $post_title = '(タイトルなし)'; $post_title = htmlspecialchars( $post_title ); // 状態 $post_status = $post->post_status; if ( $post_status == 'publish' ) $post_status = '公開中'; else if ( $post_status == 'pending' ) $post_status = '承認待'; else if ( $post_status == 'draft' ) $post_status = '下書き'; else if ( $post_status == 'future' ) $post_status = '公開待'; else if ( $post_status == 'private' ) $post_status = '非公開'; else $post_status = ' '; echo ' <tr>'."\n"; echo ' <td class="hk_nowrap">'.$modified_date.'</td>'."\n"; echo ' <td class="hk_nowrap">'.$post_status.'</td>'."\n"; echo ' <td>'.$post_title.'</td>'."\n"; echo ' </tr>'."\n"; } echo ' </tbody>'."\n"; echo '</table>'."\n"; echo '</div><!-- hk_dashboard -->'."\n"; wp_reset_postdata(); } else { echo '<div class="no-activity">'."\n"; echo ' <p>投稿がありません。</p>'."\n"; echo '</div>'."\n"; } return; } // 承認待ち function hk_functions_dashboard_pending() { global $post; // 承認処理 if ( isset( $_REQUEST['hk_approve'] ) ) { $post_id = $_REQUEST['hk_approve']; $approve = array( 'ID' => $post_id, 'post_status' => 'publish', ); // 投稿を更新 wp_update_post( $approve ); echo '<p>承認しました。</p>'."\n"; } // 承認待ち取得 $query_args = array( 'post_type' => array( 'post', 'page' ), 'post_status' => 'pending', 'orderby' => 'modified', 'order' => 'DESC', 'posts_per_page' => -1, ); $posts = new WP_Query( $query_args ); if ( $posts->have_posts() ) { echo '<div class="hk_dashboard">'."\n"; echo '<table>'."\n"; echo ' <tbody>'."\n"; echo ' <tr>'."\n"; echo ' <th class="hk_nowrap">日付</th>'."\n"; echo ' <th class="hk_nowrap">作成者</th>'."\n"; echo ' <th>タイトル</th>'."\n"; echo ' </tr>'."\n"; while ( $posts->have_posts() ) { $posts->the_post(); $post_id = $post->ID; // 更新日 $modified_date = get_the_modified_date('Y/m/d'); $modified_dates = explode( '/', $modified_date ); $modified_date = $modified_dates[0].'年'.$modified_dates[1].'月'.$modified_dates[2].'日'; // 作成者 $author_id = $post->post_author; $author_obj = get_userdata( $author_id ); $author = $author_obj->last_name.' '.$author_obj->first_name; // タイトル if ( isset( $post->post_title ) ) { $post_title = $post->post_title; if ( $post_title == '' ) $post_title = '(タイトルなし)'; } else $post_title = '(タイトルなし)'; $post_title = htmlspecialchars( $post_title ); // 承認リンク $approve_url = 'index.php?hk_approve='.$post_id; $approve_url = admin_url( $approve_url ); $approve_str = '<a title="この項目を承認する" href="'.$approve_url.'">承認</a>'; // 表示リンク $display_str = '<a title="この項目を表示する" href="'.get_permalink().'" target="_blank">表示</a>'; // 表示 echo ' <tr>'."\n"; echo ' <td class="hk_nowrap">'.$modified_date.'</td>'."\n"; echo ' <td class="hk_nowrap">'.$author.'</td>'."\n"; echo ' <td>'.$post_title.'<br />'.$approve_str.' '.$display_str."</td>\n"; echo ' </tr>'."\n"; } echo ' </tbody>'."\n"; echo '</table>'."\n"; echo '</div><!-- hk_dashboard -->'."\n"; wp_reset_postdata(); } else { echo '<div class="no-activity">'."\n"; echo ' <p>承認待ちはありません。</p>'."\n"; echo '</div>'."\n"; } return; }
このプログラムをお使いになる場合は、お使いになる方の自己責任でお願いします。