web-dev-qa-db-ja.com

カスタム投稿タイプをゴミ箱に入れるかどうかを制御する

カスタム投稿タイプのゴミ箱/削除アクションを管理する必要があります。

私はいくつかの条件をチェックし、私がCPTを捨てるべきかどうかを決める必要があります。

ごみ箱関数の前に起動されるwp_trash_actionフックは、ごみ箱プロシージャをキャンセルするオプションを私に与えません。

より具体的には、ユーザーがTRASHを押したときの状態を確認する必要があります。その条件が偽なら、私はゴミ捨て行為を止める必要があります。それが本当なら、それは続けるべきです。

1
e4rthdog

擬似コード例のように、trashed_postにフックし、wp_untrash_post()を使用して条件を満たしたときに逆にします。

add_action('trashed_post', 'wpse_218031_trashed_post');

function wpse_218031_trashed_post($post_id){
   //use post_id to check conditions... if not met call:
   if ( $some_condition ) {
       wp_untrash_post($post_id);
   }
}

trashed_postは、wp_trash_postの後、投稿がゴミ箱に移動された後に実行されます。

ちなみに、定数EMPTY_TRASH_DAYSが定義されていてfalseであれば、投稿は永久に削除され、それ以降のフックは起動されません。その場合は代わりにwp_delete_post()が呼び出されます。

3
userabuser