Ändern Sie 2 Felder im Beitrag abhängig vom 3. Feld vor dem Speichern

Ich habe einen benutzerdefinierten Inhaltstyp namens cards .

Ich habe 3 benutzerdefinierte Meta-Felder namens:

my_cards_activity ( Feldtyp auswählen; Optionen 0 und 1)

my_cards_user (Typ auswählen; viele Optionen)

my_cards_datetime (Textfeldtyp; JJJJ-MM-TT-HH: MM-Format)

Wenn ich die Taste my_cards_activity möchte ich den Wert des my_cards_activity (Wert kann 0 oder 1 sein) und wenn der Wert 0 ist, dann ändere my_cards_datetime und my_cards_user auf leeren Wert und erst nach der Änderung alles speichern. Wenn es 1 ist, dann tu nichts.

Wie macht man das, bevor man etwas rettet? Wie soll mein Code in der functions.php aussehen?

Solutions Collecting From Web of "Ändern Sie 2 Felder im Beitrag abhängig vom 3. Feld vor dem Speichern"

Verwenden Sie den Hook save_post und save_post ein if in die function ein, die nach der ‘normalen’ save_post Routine speichern speichert.

 add_action( 'save_post', 'this_is_the_function_name' ); function this_is_the_function_name( $post_id ) { // No auto saves if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // make sure the current user can edit the post if( ! current_user_can( 'edit_post' ) ) return; // assure the post type if ( ! get_post_type($post_id) == 'cards' ) return; // assure the data are sended by the form if ( ! isset($_POST['my_cards_activity']) || ! isset($_POST['my_cards_datetime']) || ! isset('my_cards_user') ) return; $activity = $_POST['my_cards_activity']; // and now the simply logic if ( $activity == 1 ) { $datetime = $_POST['my_cards_datetime']; $user = $_POST['my_cards_user']; } else { $datetime = ''; $user = ''; } // save data as array $meta_data = compact("activity", "datetime", "user"); update_post_meta($post_id, 'card_data', $meta_data); // if you want can save data as 3 different meta fields in this case // delete the previous 2 lines and uncommente the following // update_post_meta($post_id, 'card_activity', $activity); // update_post_meta($post_id, 'datetime', $datetime); // update_post_meta($post_id, 'user', $user); } 

Wenn Sie in Ihrer Metabox eine Nonce-Feldprüfung vor dem Speichern vorgenommen haben.

Siehe Codex für:

  • save_post Aktionshaken
  • get_post_type
  • update_post_meta