• 最終更新日:

【WordPress】投稿一覧で「新規追加」を非表示 - 編集、クイック編集、ゴミ箱 、プレビューも消す手順

【WordPress】投稿一覧で「新規追加」を非表示 - 編集、クイック編集、ゴミ箱 、プレビューも消す手順

今回はWordPressの投稿一覧にある「新規追加」と「編集」「クイック編集」「ゴミ箱」「プレビュー」の項目を非表示にする方法について説明します。

説明する環境は以下

  • macOS Catalina v10.15.5
  • Visual Studio Code v1.46.1

「新規追加」と「編集」「クイック編集」「ゴミ箱」「プレビュー」の項目を非表示にする方法

投稿一覧で非表示にしたい項目とは以下の部分です。

「新規追加」を非表示にする

まずは「新規追加」を非表示にします。以下のコードをfunctions.phpにコピペすることで非表示にできます。

function custom_edit_newpost_delete($hook) {

	if($hook == 'edit.php' || $hook == 'post.php'){
     echo '<style>.wrap .wp-heading-inline + .page-title-action{display: none;}</style>';
	}

}
add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete');

「編集」「クイック編集」「ゴミ箱」「プレビュー」の項目を非表示にする

「編集」など、その他の項目を非表示する場合は以下のコードをfunctions.phpにコピペします。

function custom_action_row($actions, $post){

     unset($actions['edit']); //編集
     unset($actions['inline hide-if-no-js']); //クイック編集
     unset($actions['trash']); //ゴミ箱
     unset($actions['view']); //プレビュー
   
    return $actions;
}
add_filter('post_row_actions','custom_action_row', 10, 2);

特定のカスタム投稿のときだけ、非表示にする

例えばカスタム投稿のスラッグが「recruit」で、このrecruitのときだけ非表示にする場合は以下のように書きます。

まずは「新規追加」を非表示にする場合

function custom_edit_newpost_delete($hook) {
	if($hook == 'edit.php' || $hook == 'post.php'){

    $postType = get_post_type();
    if ( $postType == 'recruit' ) { //カスタム投稿スラッグがrecruitなら非表示
        echo '<style>.wrap .wp-heading-inline + .page-title-action{display: none;}</style>';
	  }

	}
}
add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete');

それ以外の項目を非表示にする場合

function custom_action_row($actions, $post){
    
    $postType = get_post_type();
    if ( $postType == "recruit" ){ //カスタム投稿スラッグがrecruitなら非表示
       unset($actions['edit']); //編集
       unset($actions['inline hide-if-no-js']); //クイック編集
       unset($actions['trash']); //ゴミ箱
       unset($actions['view']); //プレビュー
    }

    return $actions;
}
add_filter('post_row_actions','custom_action_row', 10, 2);

「管理者」以外を非表示にする

WordPressにある以下の権限者の中で、「管理者」以外のときは非表示にすることもできます。

  • 管理者:administrator
  • 編集者:editor
  • 投稿者:author
  • 寄稿者:contributor
  • 購読者:subscriber

「新規追加」を非表示にする場合

function custom_edit_newpost_delete($hook) {
	if($hook == 'edit.php' || $hook == 'post.php'){

    if ( !current_user_can( 'administrator' ) ) { //管理者以外なら非表示
       echo '<style>.wrap .wp-heading-inline + .page-title-action{display: none;}</style>';
    }

	}
}
add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete');

それ以外の項目を非表示にする場合

function custom_action_row($actions, $post){
    
    if ( !current_user_can( 'administrator' ) ) { //管理者以外なら非表示
       unset($actions['edit']); //編集
       unset($actions['inline hide-if-no-js']); //クイック編集
       unset($actions['trash']); //ゴミ箱
       unset($actions['view']); //プレビュー 
    }

    return $actions;
}
add_filter('post_row_actions','custom_action_row', 10, 2);

特定のユーザーID以外を非表示にする

権限ではなく、ユーザーIDを使って非表示にすることもできます。ユーザーIDの調べ方については以下の記事に書いたので参考にしてみてください。

「新規追加」を非表示にする場合

function custom_edit_newpost_delete($hook) {
	if($hook == 'edit.php' || $hook == 'post.php'){

    $current_user = wp_get_current_user();
    if( $current_user->ID != "3") { //ユーザーIDが"3"以外は非表示
      echo '<style>.wrap .wp-heading-inline + .page-title-action{display: none;}</style>';
    }

	}
}
add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete');

それ以外の項目を非表示にする場合

function custom_action_row($actions, $post){
    
    $current_user = wp_get_current_user();
    if( $current_user->ID != "3") { //ユーザーIDが"3"以外は非表示
       unset($actions['edit']); //編集
       unset($actions['inline hide-if-no-js']); //クイック編集
       unset($actions['trash']); //ゴミ箱
       unset($actions['view']); //プレビュー 
    }

    return $actions;
}
add_filter('post_row_actions','custom_action_row', 10, 2);

特定のカスタム投稿で、かつ「管理者」以外を非表示にする

カスタム投稿スラッグが「recruit」で、かつ「管理者」以外を非表示する場合は以下のように書きます。

「新規追加」を非表示にする場合

function custom_edit_newpost_delete($hook) {
	if($hook == 'edit.php' || $hook == 'post.php'){

    if ( !current_user_can( 'administrator' ) ) { //管理者以外なら

       $postType = get_post_type();
       if ( $postType == "recruit" ){ //カスタム投稿スラッグがrecruitなら
          echo '<style>.wrap .wp-heading-inline + .page-title-action{display: none;}</style>';
       }

    }

	}
}
add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete');

それ以外の項目を非表示にする場合

function custom_action_row($actions, $post){
    
    if ( !current_user_can( 'administrator' ) ) { //管理者以外なら

       $postType = get_post_type();
       if ( $postType == "recruit" ){ //カスタム投稿スラッグがrecruitなら
       unset($actions['edit']); //編集
       unset($actions['inline hide-if-no-js']); //クイック編集
       unset($actions['trash']); //ゴミ箱
       unset($actions['view']); //プレビュー 
       }

    }

    return $actions;
}
add_filter('post_row_actions','custom_action_row', 10, 2);

特定のカスタム投稿で、かつ特定のユーザーID以外を非表示にする

カスタム投稿スラッグが「recruit」で、かつユーザーIDが「3」以外を非表示にする場合は以下のように書きます。

新規追加を非表示にする場合

function custom_edit_newpost_delete($hook) {
	if($hook == 'edit.php' || $hook == 'post.php'){

    $current_user = wp_get_current_user();
    if( $current_user->ID != "3") { //ユーザーIDが"3"以外なら

       $postType = get_post_type();
       if ( $postType == "recruit" ){ //カスタム投稿スラッグがrecruitなら
          echo '<style>.wrap .wp-heading-inline + .page-title-action{display: none;}</style>';
       }

    }

	}
}
add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete');

それ以外の項目を非表示にする場合

function custom_action_row($actions, $post){
    
    $current_user = wp_get_current_user();
    if( $current_user->ID != "3") { //ユーザーIDが"3"以外なら

       $postType = get_post_type();
       if ( $postType == "recruit" ){ //カスタム投稿スラッグがrecruitなら
       unset($actions['edit']); //編集
       unset($actions['inline hide-if-no-js']); //クイック編集
       unset($actions['trash']); //ゴミ箱
       unset($actions['view']); //プレビュー 
       }

    }

    return $actions;
}
add_filter('post_row_actions','custom_action_row', 10, 2);

さいごに

今回はWordPressの投稿一覧にある「新規追加」と「編集」「クイック編集」「ゴミ箱」「プレビュー」の項目を非表示にする方法について説明しました。

例えばクライアント側で、特定の投稿タイプの「編集」だけを操作してもらいたい場合などに使える設定方法です。