// Hook into the 'admin_init' action add_action('add_meta_boxes', 'custom_add_custom_box'); // Function to register the new meta box function custom_add_custom_box() { add_meta_box( 'custom_meta_box_id', // ID of meta box 'Custom Text', // Title of the meta box (renamed to "Custom Text") 'custom_meta_box_callback', // Callback function 'custom' // Screen to which to add the meta box (e.g., post, page, dashboard, link, attachment, or any custom post type) ); } // Callback function for the meta box function custom_meta_box_callback($post) { // Create a nonce field for validation wp_nonce_field(basename(__FILE__), 'custom_meta_box_nonce'); // Get the current values if they exist $custom_stored_meta = get_post_meta($post->ID); // Create the meta box form fields here echo '<label for="custom_meta_field">'; _e('Custom Text', 'custom_textdomain'); // Renamed label to "Custom Text" echo '</label> '; echo '<input type="text" id="custom_meta_field" name="custom_meta_field" value="' . esc_attr($custom_stored_meta['custom_meta_field'][0]) . '" size="25" />'; } // Hook into the 'save_post' action so we can save the data from the meta box add_action('save_post', 'custom_save_postdata'); function custom_save_postdata($post_id) { // Check if our nonce is set. if (!isset($_POST['custom_meta_box_nonce'])) return $post_id; $nonce = $_POST['custom_meta_box_nonce']; // Verify that the nonce is valid. if (!wp_verify_nonce($nonce, basename(__FILE__))) return $post_id; // Check the user's permissions. if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) return $post_id; } else { if (!current_user_can('edit_post', $post_id)) return $post_id; } /* OK, it's safe for us to save the data now. */ // Make sure that it is set. if (!isset($_POST['custom_meta_field'])) return; // Sanitize user input. $my_data = sanitize_text_field($_POST['custom_meta_field']); // Update the meta field in the database. update_post_meta($post_id, 'custom_meta_field', $my_data); }