Before Delete Post

时间:2016-12-23 作者:Eckstein

我试图在删除另一个自定义帖子类型时更新一个自定义帖子类型的meta的值。

删除space\\u rental时,我需要更新空间上的一些元值。

我想我不能用delete_post 因为它在元数据被删除后触发,但这对我也不起作用(无论是在垃圾帖还是清空垃圾)。

这里是函数,下面是每个帖子类型的元数据结构。

//When a space_rental is deleted, we release the space slots they had saved
add_action( \'before_delete_post\', \'tps_delete_space_rental\' );
function tps_delete_space_rental( $postid ){

if (get_post_type($postid) != \'space_rental\') {
return;
}
//Loop through the selected slots in the rental
$selectedSlots = get_post_meta($postid, \'selectedSlots\', true);
foreach ($selectedSlots as $slot) {
    $spaceSlots = get_post_meta($slot[\'spaceid\'], \'allSlots\', true);
    //Loop through the slots in the space and find the ones that have the rentalID set to the deleted post
    foreach ($spaceSlots as $sSlot) {
        if($postid == $sSlot[\'details\'][\'rentalID\']) {
            $sSlot[\'details\'][\'slotStatus\'] = \'open\';
        }
    }
}
}
“space”post\\u type meta的存储方式如下:

allSlots => array(
\'timestamp\' => \'123456789\', //timestamp representing this slot
\'details\' => array(
    \'slotStatus\' => \'open\', //this is either open or filled
    \'slotUser\' => 123, //The ID of the user who owns the rental using this slot
    \'rentalID\' => 345, //The post_id of the \'space_rental\' that is using this slot
),
);
此“space\\u rental”post\\u类型元数据的存储方式如下:

selectedSlots => array(
\'spaceSlots\' => array(
    123456789, 654321987, 9876432654, etc...,// An array of timestamps in this rental
),
    \'spaceid\' => 789, //The post_id of the \'space\' where this rental is
);

2 个回复
SO网友:Tunji

There\'s a trash post hook

add_action( \'trash_post\', \'my_func\' );
function my_func( $postid ){

    // We check if the global post type isn\'t ours and just return
    global $post_type;   
    if ( $post_type != \'my_custom_post_type\' ) return;

    // My custom stuff for deleting my custom post type here
}
SO网友:sdx11

如果您想在用户删除时捕获它(意味着单击帖子上的垃圾),那么可能的解决方案是使用trash_post

add_action( \'trash_post\', \'my_func_before_trash\',999,1);

function my_func_before_trash($postid){
        //my custom code
}

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果