web-dev-qa-db-ja.com

Save_postからゴミを除外する

カスタム投稿タイプを保存する際にカスタムメタボックスデータを処理する関数があります。

add_action('save_post_customtypehere','myown_save_customtype_fn');
function myown_save_customtype_fn($ID) { ... }

ただし、このCPT内のアイテムをゴミ箱に入れたときにもこの関数は実行されます(post_statustrashに変更することでポストを効果的に保存できると思います)。メタボックスが存在しないと、私の関数はpost_nameのようなものをクリアしてしまいます(ゴミから復元する必要がある場合は良くありません)。

私は2つの考えを持っていますが、それらと一緒にフィニッシュラインを乗り越えることはできません:

1)ポストデータを更新するために、私はremove_action()add_action()wp_update_post(array('post_key'=>$sanitized_form_input))の周りで再び使います - codex命令のように、これは無限ループを避けるために必要です。 trash_postアクションから除外する同様の方法があるかもしれません(私は元のremove_action('trash_post','myown_save_customtype_fn'行の直後にadd_actionをすでに試しました)。

2)myown_save_customtype_fn内の(if (current action!='trash_post') { ...の行に沿って)条件式で使えるものはありますか

1
Adam

投稿が保存されると、 save_post が発生します。現在の投稿オブジェクトを2番目のパラメータとして取得します。現在の投稿のステータスがゴミかどうかを確認できます。

<?php
add_action( 'save_post', function( $post_ID, $post, $update ) {
    if ( 'trash' === $post->post_status ) {
        return;
    }

    /** do your stuff **/
}, 10, 3 );
?>
2
websupporter