web-dev-qa-db-ja.com

カスタム投稿タイプのクイック編集を削除

カスタム投稿タイプのクイック編集機能を削除することは可能ですか?

それぞれに何百もの用語を含む14のカスタム分類法があり、それらすべてをページのソースコードにロードするには時間とリソースがかかりすぎます。

私はグーグルを使用して解決策を見つけようとしましたが、それらのほとんどはクイック編集ボタンを隠すだけですが、コードはワードプレスによってフッターにロードされるので、実際には何の違いもありません。

2
passatgt

コーデックスの builk actionsページ を調べてください。設定を解除するための適切なアクションはインラインであると思います。これにより、「編集」一括操作が削除されます。これは実際には簡単な編集です。

<?php
    function remove_bulk_actions( $actions ){
        unset( $actions['inline'] );
        return $actions;
    }
    add_filter('bulk_actions-custom_post_type_slug','remove_bulk_actions');
?>

各行のクイック編集については、 manage _ {$ post_type} _columns を調べて、Title列を自分の列に置き換えることができるので、それを好きなようにレンダリングしてください。 WP投稿リストテーブル にクイック編集を削除するフィルタは現在ありません。そのため、列の置き換えがうまくいかない場合は、独自の WP list table extension (すばらしいチュートリアル)。

4
Eric Holmes

Ericの投稿を明確にするために、add_filterコードはカスタム投稿タイプslugの前にscreenidを持つ必要があります。最も一般的なのはbulk_actions-edit-custom_post_type_slugです。

また、unset( $actions['inline'] )はオプションのようには見えません。

unset( $actions['edit'] )unset( $actions['trash'] )の両方が私が見つけたすべてでした。

最後に、このコードは一括オプションのドロップメニュー項目を削除します。ではありません。

function ssp_remove_member_bulk_actions( $actions ){
     unset( $actions['edit'] );
     return $actions;
}
add_filter('bulk_actions-edit-member','ssp_remove_member_bulk_actions');

このコードはクイック編集を削除します(jfacemyerに感謝します)

function remove_quick_edit( $actions ) {    
     unset($actions['inline hide-if-no-js']);
     return $actions;
}
add_filter('post_row_actions','remove_quick_edit',10,1);

あなたもオフにすることができます:

  1. edit = unset($actions['edit']);
  2. ゴミ箱= unset($actions['trash']);
  3. view = unset($actions['view']);

クイック編集のホバーオプションからすべてを削除するには:

function remove_quick_edit( $actions ) {    
     unset($actions['edit']);
     unset($actions['trash']);
     unset($actions['view']);
     unset($actions['inline hide-if-no-js']);
     return $actions;
}
add_filter('post_row_actions','remove_quick_edit',10,1);

最後に、カスタム投稿タイプ、あるいはユーザー機能に基づいてのみアクションを削除できます。

// Based on Post Type
if ($post->post_type=='myposttype') {
    unset($actions['edit']);
}
// Based on User Capability
if ( current_user_can('manage_options') ) {
   unset($actions['edit']);
}

承認された回答は 一括編集 ドロップダウンを変更しますが、 投稿行は変更しません .

探しているフィルタはwp-admin/includes/class-wp-posts-list-table.phpの1342行目(WordPress 5.0.2)にあります。

/**
 * Filters the array of row action links on the Posts list table.
 *
 * The filter is evaluated only for non-hierarchical post types.
 *
 * @since 2.8.0
 *
 * @param array $actions An array of row action links. Defaults are
 *                         'Edit', 'Quick Edit', 'Restore', 'Trash',
 *                         'Delete Permanently', 'Preview', and 'View'.
 * @param WP_Post $post The post object.
 */
$actions = apply_filters( 'post_row_actions', $actions, $post );

これは動作します:

/**
 * This filter modifies "my_post_type" post rows,
 * such as "Edit", "Quick Edit" and "Trash".
 *
 * @param $actions
 * @param $post
 *
 * @return mixed
 */
add_filter('post_row_actions', function($action, $post) {
    if ($post->post_type == 'my_post_type') {
        // Remove "Quick Edit"
        unset($actions['inline hide-if-no-js']);
    }
    return $actions;
});
0