带有自定义POST类型的WP_TRASH_POST操作挂钩

时间:2014-04-20 作者:Ronnieinspain

当“联系人”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\'. 但它仍然不起作用。

1 个回复
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.

结束

相关推荐

wp_list_tables bulk actions

如何在扩展的WP\\U List\\U表中触发批量操作。我一直在将以下批量操作添加到may table的选择框中,但在Apply上不会发生任何事情下面是我如何添加批量操作的function get_bulk_actions() { $actions = array( \'delete\' => \'Delete\', \'parsing\' => \'Parsen\' );