Metabox not saving values

时间:2020-02-13 作者:BuddyHoli

我有个问题。“我的字段”显示在元框中,但保存不起作用:

<?php
// Create the metabox and fields
function food_meta_box_markup($object) {
    wp_nonce_field(basename(__FILE__), "meta-box-nonce");
    ?>

    <div>
        <label for="np-calories" class="np-label"><?php _e(\'Energy (kcal)\', \'nutriplus\') ?></label>
        <input name="np_calories" type="number" class="np-field"
               value="<?php echo get_post_meta($object->ID, "np_calories", true); ?>">
    </div>

    <?php
}

function add_food_meta_box() {
    add_meta_box("food-meta-box", __(\'Nutritional Information\', \'nutriplus\'), "food_meta_box_markup", "np-food", "side", "high", NULL);
}

add_action("add_meta_boxes", "add_food_meta_box");
// Save the metabox and fields
function food_save_meta_box_data($post_id) {

    // verify taxonomies meta box nonce

    if (!isset($_POST[\'food_meta_box_nonce\']) || !wp_verify_nonce($_POST[\'food_meta_box_nonce\'], basename(__FILE__))) {
        return;
    }

    // return if autosave
    if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
        return;
    }

    // Check the user\'s permissions.
    if (!current_user_can(\'edit_post\', $post_id)) {
        return;
    }

    if ($post->post_type == "np-food") {

        // store custom fields values
        // energy kcal string
        if (isset($_REQUEST[\'np_calories\'])) {
            update_post_meta($post_id, \'np_calories\', sanitize_text_field($_POST[\'np_calories\']));
        }
    }
}

add_action(\'save_post_food\', \'food_save_meta_box_data\');

?>
我的Metabox值不保存:(

当做

巴迪

1 个回复
最合适的回答,由SO网友:rajat.gite 整理而成

这是我的工作代码

// Add meta box
function frontpage_meta_boxes( $post ){
    global $post;

    if(!empty($post))
    $page_template = get_post_meta( $post->ID, \'_wp_page_template\', true );
    {
        $pageTemplate = get_post_meta($post->ID, \'_wp_page_template\', true);

        if($pageTemplate == \'page-home.php\' )
        {
            add_meta_box( \'frontpage_meta_box\', __( \'Features\' ), \'frontpage_meta_box\', \'page\', \'advanced\', \'high\' );
        }
    }
}
add_action( \'add_meta_boxes_page\', \'frontpage_meta_boxes\' );

// builds our meta box
function frontpage_meta_box( $post ){
    // make sure the form request comes from WordPress
    wp_nonce_field( basename( __FILE__ ), \'frontpage_meta_box_nonce\' );
    // retrieve the _manuf_url current value
    $manufacturer_url = get_post_meta( $post->ID, \'_manuf_url\', true );

    ?>
        <h3><?php _e( \'Manufacturer URL\' ); ?></h3>
            <p>
                <input type="text" name="manufacturer-url" value="<?php echo $manufacturer_url; ?>" /> 
            </p>

    <?php
}

// saves our data
function frontpage_save_meta_box_data( $post_id ){
    // verify meta box nonce
    if ( !isset( $_POST[\'frontpage_meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'frontpage_meta_box_nonce\'], basename( __FILE__ ) ) ){
        return;
    }
    // return if autosave
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ){
        return;
    }
  // Check the user\'s permissions.
    if ( ! current_user_can( \'edit_post\', $post_id ) ){
        return;
    }
    // manufacturer url string
    if ( isset( $_REQUEST[\'manufacturer-url\'] ) ) {
        update_post_meta( $post_id, \'_manuf_url\', sanitize_text_field( $_POST[\'manufacturer-url\'] ) );
    }
    // store custom fields values
}
add_action( \'save_post_page\', \'frontpage_save_meta_box_data\' );