我已经将一个操作绑定到状态更改中,它在后端工作。但是,使用前端按钮更新post状态不会触发该操作(http://wordpress.stackexchange.com/questions/17794/publish-pending-article-from-front-end-with-a-button),但它会更新post状态。
所以我有一个按钮,可以将帖子从“草稿”更新为“拒绝”
function show_reject_button(){
global $post;
echo \'<form name="front_end_reject" method="POST" action="">
<input type="hidden" name="pid2" id="pid2" value="\'.$post->ID.\'">
<input type="hidden" name="FE_REJECT" id="FE_REJECT" value="FE_REJECT">
<input type="image" src="https://---.com/images/logo1/sreject.png" alt="reject" title="Reject this reservation" style="background: none !important; border: none !important;">
</form>\';
}
function change_post_status($post_id,$status){
$current_post = get_post( $post_id, \'ARRAY_A\' );
$current_post[\'post_status\'] = $status;
wp_update_post($current_post);
}
if (isset($_POST[\'FE_REJECT\']) && $_POST[\'FE_REJECT\'] == \'FE_REJECT\'){
if (isset($_POST[\'pid2\']) && !empty($_POST[\'pid2\'])){
change_post_status((int)$_POST[\'pid2\'],\'rejected\');
}
}
我要感谢班纳特的密码。
我将一篇文章从草稿更改为被拒绝的动作绑定到一个函数中,用于更改一些帖子元。
add_action (\'draft_to_rejected\', \'void_payment_hold\' );
function void_payment_hold() {
global $post;
$type = get_post_type( $post->ID );
if( $type == \'tribe_events\' ){
$order_id = get_post_meta($post->ID, \'order\', TRUE);
$current_hold = get_post_meta($order_id, \'hold\', TRUE);
$released_amount = get_post_meta($post->ID, \'amount\', TRUE);
$remaining_hold = $current_hold - $released_amount;
__update_post_meta($order_id, \'hold\', $remaining_hold);
}
}
当我在后端执行此操作时,它会工作,但当我使用按钮更新post状态时,该函数不会执行。有人知道为什么会这样吗?
谢谢你抽出时间