Die Meta-Box verliert ihren Wert, wenn der geplante Post veröffentlicht wird

Ich habe ein Plugin mit einer Meta-Box erstellt, die ein Kontrollkästchen hat und bemerkt, dass, wenn ein Beitrag von geplant (Zukunft) zu veröffentlicht wird, das Meta nicht mehr überprüft wird.

Wenn ich den Post plane und das Kästchen ankreuze, bleibt es gespeichert. Wenn der Beitrag veröffentlicht wird und ich das Kästchen ankreuze, bleibt es markiert. Wenn Sie von “published” zu “draft” wechseln, wird das Kontrollkästchen aktiviert.

Ich weiß nicht, was ich falsch mache. Hier ist mein Code:

add_action('add_meta_boxes', 'add_feature_meta'); function add_feature_meta() { if(current_user_can('edit_posts')) { add_meta_box('feature_meta_id', 'Feature this Article?', 'feature_meta_box', 'post', 'side', 'high'); } } function feature_meta_box() { global $post; $feature_data = get_post_meta($post->ID, 'feature_meta_id', true); ?>  <?php } function k2_feature_meta_save_details($post_id) { global $post; if((defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) || (defined('DOING_AJAX') && DOING_AJAX)) { return; } if(isset($_POST['feature_meta_id'])) { $feature_data = 1; } else { $feature_data = 0; } update_post_meta($post_id, 'feature_meta_id', $feature_data); } add_action('save_post', 'k2_feature_meta_save_details'); 

Solutions Collecting From Web of "Die Meta-Box verliert ihren Wert, wenn der geplante Post veröffentlicht wird"

Ich habe das nicht getestet, aber ich schätze, dass $_POST nicht gesetzt ist, wenn der Post gespeichert wird, wenn wp_cron den Status von “Geplant” auf “Veröffentlicht” ändert und Ihr Wert auf 0 gespeichert / zurückgesetzt wird.

Anstatt save_post Sie die verschiedenen Übergangshaken verwenden , die Ihren Anforderungen entsprechen.

Oder Sie können Ihre Aktion für eine oder mehrere problematische Übergänge entfernen. Beispielsweise:

 add_action( 'pending_to_publish', function($post) { remove_action('save_post', 'k2_feature_meta_save_details'); } ); 

Ungeprüft, aber ich hoffe das hilft.