'string', 'description' => 'Verdict classification state', 'single' => true, 'show_in_rest' => true, 'auth_callback' => '__return_true', 'sanitize_callback' => function ( $value ) use ( $allowed_states ) { return in_array( $value, $allowed_states, true ) ? $value : ''; }, ) ); // Register signal row meta (up to 3). for ( $i = 1; $i <= 3; $i++ ) { register_post_meta( 'pr_peptide', 'signal_row_' . $i, array( 'type' => 'string', 'description' => 'Evidence signal row ' . $i, 'single' => true, 'show_in_rest' => true, 'auth_callback' => '__return_true', 'sanitize_callback' => 'sanitize_text_field', ) ); } } add_action( 'init', 'peptide_starter_register_verdict_meta' ); /** * Add verdict meta box to pr_peptide edit screen. * * @return void */ function peptide_starter_add_verdict_meta_box() { add_meta_box( 'peptide_starter_verdict', esc_html__( 'Verdict System', 'peptide-starter' ), 'peptide_starter_render_verdict_meta_box', 'pr_peptide', 'normal', 'high' ); } add_action( 'add_meta_boxes', 'peptide_starter_add_verdict_meta_box' ); /** * Render verdict meta box HTML. * * @param WP_Post $post The post object. * @return void */ function peptide_starter_render_verdict_meta_box( $post ) { wp_nonce_field( 'peptide_starter_verdict_nonce', 'peptide_starter_verdict_nonce' ); $verdict_state = get_post_meta( $post->ID, 'verdict_state', true ); $signal_row_1 = get_post_meta( $post->ID, 'signal_row_1', true ); $signal_row_2 = get_post_meta( $post->ID, 'signal_row_2', true ); $signal_row_3 = get_post_meta( $post->ID, 'signal_row_3', true ); $allowed_states = array( 'established' => esc_html__( 'Established', 'peptide-starter' ), 'promising' => esc_html__( 'Promising', 'peptide-starter' ), 'investigational' => esc_html__( 'Investigational', 'peptide-starter' ), 'insufficient' => esc_html__( 'Insufficient Evidence', 'peptide-starter' ), 'cautionary' => esc_html__( 'Cautionary', 'peptide-starter' ), ); ?>
post_type ) { return; } // Allow only editors and admins. if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } $allowed_states = array( 'established', 'promising', 'investigational', 'insufficient', 'cautionary' ); // Save verdict_state. if ( isset( $_POST['verdict_state'] ) ) { $state = sanitize_text_field( wp_unslash( $_POST['verdict_state'] ) ); if ( in_array( $state, $allowed_states, true ) ) { update_post_meta( $post_id, 'verdict_state', $state ); } else { delete_post_meta( $post_id, 'verdict_state' ); } } // Save signal rows. for ( $i = 1; $i <= 3; $i++ ) { $field_name = 'signal_row_' . $i; if ( isset( $_POST[ $field_name ] ) ) { $value = sanitize_text_field( wp_unslash( $_POST[ $field_name ] ) ); if ( ! empty( $value ) ) { update_post_meta( $post_id, $field_name, $value ); } else { delete_post_meta( $post_id, $field_name ); } } } } add_action( 'save_post', 'peptide_starter_save_verdict_meta', 10, 2 );