我有一个函数,用于在保存自定义帖子类型时处理自定义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 );
?>