我有一个函数,用于在保存自定义帖子类型时处理自定义metabox数据:
add_action(\'save_post_customtypehere\',\'myown_save_customtype_fn\');
function myown_save_customtype_fn($ID) { ... }
然而,当我在这个CPT中丢弃项目时,该函数也会运行(我想这可以有效地保存帖子以进行更改
post_status
到
trash
). 如果没有metabox,我的函数最终会清除以下内容
post_name
(如果我需要从垃圾中恢复,那就不太好了!)。
我有两个想法,但无法完全克服它们:
1) 为了更新我使用的post数据remove_action()
和add_action()
再来一次wp_update_post(array(\'post_key\'=>$sanitized_form_input))
- 根据codex指令,这是避免无限循环所必需的。有没有类似的方法可以从垃圾桶张贴操作中排除(我已经尝试过了remove_action(\'trash_post\',\'myown_save_customtype_fn\'
紧随原文之后add_action
行)。
2) 有什么东西我可以用在条件句中吗myown_save_customtype_fn
(沿着if (current action!=\'trash_post\') { ...
)
最合适的回答,由SO网友:websupporter 整理而成
save_post
保存帖子后被解雇。我们将当前post对象作为第二个参数。因此,我们可以检查当前帖子状态是否为垃圾:
<?php
add_action( \'save_post\', function( $post_ID, $post, $update ) {
if ( \'trash\' === $post->post_status ) {
return;
}
/** do your stuff **/
}, 10, 3 );
?>