当“联系人”cpt帖子被丢弃时,我需要删除另一个cpt“act”中的元键,我一直在搜索应该使用哪个钩子,但不幸的是codex action reference 页面不是很有帮助。下面是我的代码。
理想情况下,我还希望在发布列表屏幕中放置一个管理员通知,用户将被重定向到该屏幕。
问题:
这是最好的钩子吗为什么它不能按预期工作以下是我迄今为止的代码。
add_action( \'wp_trash_contact\', \'contact_cpt_cleanup\' );
function contact_cpt_cleanup( $post_id ){
global $post_type;
if ( $post_type != \'contact\' ) return;
// die(\'deleted contact\');
// check to see if the current contact has any acts attached
$acts_associated = get_post_meta( $post_id, \'acts_associated\', true );
// if so, delete the association from the act to the contact
if( $acts_associated ){
foreach( $acts_associated as $act_id ) {
delete_post_meta( (int) $act_id, \'contact_associated\' );
}
}
}
谢谢。
编辑:
阅读此
post 还有这个
error report 我现在相信这个动作挂钩的正确语法是
wp_{post_status}_{post_type}
而不是
\'trash_post\'
. 但它仍然不起作用。
SO网友:Rarst
wp_trash_post
是文本,不是动态的。它不会改变,总是以_post
无论实际职位类型如何。看见wp_trash_post()
:
do_action( \'wp_trash_post\', $post_id );
您还应该检索post并从中检查其类型
$post_id
, 不要以这种方式使用globals,因为它们可能指的是完全不同的帖子。
你的第二个理论指的是完全不同的挂钩wp_transition_post_status()
:
do_action( "{$new_status}_{$post->post_type}", $post->ID, $post );
请注意,它不是以
wp_
, 然而,它在动态上确实包含特定的post类型,因此
trash_contact
.