Warum löscht diese update_post_meta-function nicht das benutzerdefinierte Feld selbst?

Ich versuche, einen Metaschlüsselwert von entweder “Ja” oder Null mit dem Kontrollkästchen festzulegen, so dass ich Beiträge mit einer Abfrage auswählen kann, die überprüft, ob der Metaschlüssel vorhanden ist und nicht den Wert des Metaschlüssels verwenden. Ich möchte keinen Meta-Schlüssel zu allen vorhandenen Posts hinzufügen und möchte den Meta-Schlüssel löschen, wenn er nicht markiert ist.

Aber update_post_meta am Ende dieser function löscht nicht das meta_key featured-checkbox beim Update. Wie kann ich die function zum Löschen des Schlüssels bekommen?

 // Featured Post metabox function prfx_featured_meta() { add_meta_box( 'prfx_meta', __( 'Featured Posts', 'prfx-textdomain' ), 'prfx_meta_callback', 'post', 'side', 'high' ); } add_action( 'add_meta_boxes', 'prfx_featured_meta' ); /** * Outputs the content of the meta box */ function prfx_meta_callback( $post ) { wp_nonce_field( basename( __FILE__ ), 'prfx_nonce' ); $prfx_stored_meta = get_post_meta( $post->ID ); ?> 

<?php } /** * Saves the custom meta input */ function prfx_meta_save( $post_id ) { // Checks save status $is_autosave = wp_is_post_autosave( $post_id ); $is_revision = wp_is_post_revision( $post_id ); $is_valid_nonce = ( isset( $_POST[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[ 'prfx_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false'; // Exits script depending on save status if ( $is_autosave || $is_revision || !$is_valid_nonce ) { return; } // Checks for input and sanitizes/saves if needed // How do I delete the featured-checkbox key and not update it? if( isset( $_POST[ 'featured-checkbox' ] ) ) { update_post_meta( $post_id, 'featured-checkbox', sanitize_text_field( $_POST[ 'featured-checkbox' ] ) ); } } add_action( 'save_post', 'prfx_meta_save' );

Update 12/22/16: Diese Änderung funktioniert:

 // Checks for input and saves - save checked as yes or deletes meta_key if no if( isset( $_POST[ 'featured-checkbox' ] ) ) { update_post_meta( $post_id, 'featured-checkbox', 'yes' ); } else { delete_post_meta( $post_id, 'featured-checkbox' ); } 

Solutions Collecting From Web of "Warum löscht diese update_post_meta-function nicht das benutzerdefinierte Feld selbst?"

Sie suchen nach delete_post_meta($post_id, $meta_key, $meta_value);

Parameter

$ post_id (integer) (erforderlich) Die ID des Posts, von dem Sie ein Feld löschen. Standard: Keine

$ meta_key (string) (erforderlich) Der Schlüssel des Felds, das Sie löschen möchten . Standard: Keine

$ meta_value (gemischt) (optional) Der Wert des zu löschenden Feldes. Dies wird verwendet, um zwischen mehreren Feldern mit demselben Schlüssel zu unterscheiden. Wenn dieses Feld leer gelassen wird, werden alle Felder mit dem angegebenen Schlüssel gelöscht. Standard: Leer