カスタム投稿タイプを保存する際にカスタムメタボックスデータを処理する関数があります。
add_action('save_post_customtypehere','myown_save_customtype_fn');
function myown_save_customtype_fn($ID) { ... }
ただし、このCPT内のアイテムをゴミ箱に入れたときにもこの関数は実行されます(post_status
をtrash
に変更することでポストを効果的に保存できると思います)。メタボックスが存在しないと、私の関数は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') { ...
の行に沿って)条件式で使えるものはありますか
投稿が保存されると、 save_post
が発生します。現在の投稿オブジェクトを2番目のパラメータとして取得します。現在の投稿のステータスがゴミかどうかを確認できます。
<?php
add_action( 'save_post', function( $post_ID, $post, $update ) {
if ( 'trash' === $post->post_status ) {
return;
}
/** do your stuff **/
}, 10, 3 );
?>