【WordPress】ログインユーザーの投稿一覧を管理画面に追加する方法

【WordPress】ログインユーザーの投稿一覧を管理画面に追加する方法 WordPress

WordPressでは、投稿一覧画面にすべての投稿が表示されますが、特定のユーザーが自分の投稿だけを確認できる専用の一覧ページがあると便利な場面があります。特に複数の投稿者が関わるメディアサイトや寄稿型ブログでは、自分の投稿だけを簡単に管理できるUIが求められます。

本記事では、WordPressの管理画面に「自分の投稿」専用のサブメニューを追加し、ログイン中のユーザーが自身の投稿だけを確認・編集できる機能の実装方法を紹介します。

管理画面に「自分の投稿」メニューを追加する

まずは、管理画面の「投稿」メニューに「自分の投稿」という項目を追加します。以下のコードを functions.php に記述してください。

// 「自分の投稿」メニューを追加
function add_own_posts_menu() {
  if (current_user_can('edit_posts')) {
    add_posts_page(
      '自分の投稿',
      '自分の投稿',
      'read',
      'own_posts',
      'render_own_posts_list'
    );
  }
}
add_action('admin_menu', 'add_own_posts_menu');

「自分の投稿」一覧の表示内容を定義する

次に、追加したサブメニューで自分の投稿だけを表示するための画面を構築します。

// 自分の投稿だけを表示するリスト
function render_own_posts_list() {
  $current_user_id = get_current_user_id();
  $args = array(
    'author' => $current_user_id,
    'post_type' => 'post',
    'post_status' => array('publish', 'draft', 'pending'),
    'posts_per_page' => 20,
  );
  $user_posts = new WP_Query($args);

  echo '<div class="wrap">';
  echo '<h1>自分の投稿一覧</h1>';

  if ($user_posts->have_posts()) {
    echo '<ul>';
    while ($user_posts->have_posts()) {
      $user_posts->the_post();
      echo '<li><a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>(' . get_the_date() . ')</li>';
    }
    echo '</ul>';
  } else {
    echo '<p>まだ投稿はありません。</p>';
  }

  echo '</div>';
  wp_reset_postdata();
}

投稿タイプをカスタム投稿に対応させる方法

カスタム投稿タイプにも対応させたい場合は、'post_type' => 'post' の部分を任意の投稿タイプ(例:'news')に変更してください。

ユーザー別に運用するメリット

このようにユーザーごとに投稿一覧を分けることで、以下のようなメリットがあります。

  • 複数ライターが在籍するメディアサイトでの管理性向上
  • 寄稿者が自身の投稿だけを簡単に管理・編集可能
  • 誤って他人の投稿を編集・削除するリスクを低減

まとめ

WordPressの管理画面に「自分の投稿」専用メニューを追加することで、よりユーザーフレンドリーな運営が可能になります。寄稿者の多いサイトや、権限を細かく分けて管理したい場合などにぜひ活用してみてください。