Lorsque je sauvegarde mon "produit" personnalisé post_type, je souhaite définir leur statut sur mon statut personnalisé "incomplet".
Crochet wp_insert_post_data
filtre pour forcer un statut de publication comme incomplet avant de pouvoir être défini comme publié. Avec le code suivant, seule une publication définie comme incomplète peut être enregistrée:
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;
}