如何将默认状态设置为自定义帖子类型

时间:2013-09-09 作者:Vincent Wasteels

当我保存自定义post\\u类型“product”时,我想将其状态设置为我的自定义状态“Complete”。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

wp_insert_post_data 筛选以强制将帖子状态设置为未完成,然后才能将其设置为已发布。使用以下代码,只能保存设置为未完成的帖子:

add_filter( \'wp_insert_post_data\', \'prevent_post_change\', 20, 2 );

function prevent_post_change( $data, $postarr ) {
    if ( ! isset($postarr[\'ID\']) || ! $postarr[\'ID\'] ) return $data;
    if ( $postarr[\'post_type\'] !== \'product\' ) return $data; // only for products
    $old = get_post($postarr[\'ID\']); // the post before update
    if (
        $old->post_status !== \'incomplete\' &&
        $old->post_status !== \'trash\' && // without this post restoring from trash fail
        $data[\'post_status\'] === \'publish\' 
    ) {
        // set post to incomplete before being published
        $data[\'post_status\'] = \'incomplete\';
    }
    return $data;
}

结束

相关推荐