質問: 投稿が削除されないようにする方法 監査の問題では、私は投稿をゴミ箱に入れることができますが、削除することはできません - すべてのユーザーに対して。だから私はのようなプラグインがありますadd_action('before_delete_post', function($id) { wp_die(0); }); しかし、すべての削除アクションがajaxであるとは限らないので、結果が "0"のエラーページを返すと黒い画面が表示されます。上のコードで大丈夫ですが、もっと良い方法はありますか。
回答: 削除に対する保護の最後の層としてフックbefore_delete_postを使用します(@ tfの解決策を使用します。これが正しい答えです)。そして最初に「削除」オプションを見えなくします。次の例では、 bulk actions および empty trash ボタンを非表示にし、 delete permanently 行アクションを削除しています。このコードでは:add_action( 'admin_head-edit.php', 'hide_delete_css_wpse_92155' ); add_filter( 'post_row_actions', 'hide_row_action_wpse_92155', 10, 2 ); add_filter( 'page_row_actions', 'hide_row_action_wpse_92155', 10, 2 ); function hide_delete_css_wpse_92155() { if( isset( $_request['post_status'] ) && 'trash' == $_request['post_status'] ) { echo "<style> .alignleft.actions:first-child, #delete_all { display: none; } </style>"; } } function hide_row_action_wpse_92155( $actions, $post ) { if( isset( $_request['post_status'] ) && 'trash' == $_request['post_status'] ) unset( $actions['delete'] ); return $actions; } これが結果です。興味のあるメモフックcpt_row_actionsはありません。フックpage_row_actionsおよびpost_row_actionsは、それぞれ 投稿タイプが階層型であるかどうかにかかわらず適用されます です。