WordPress Meta Box - 第二个字段不保存

时间:2012-12-30 19:27:21

标签: php wordpress meta-boxes

所以我一直在玩一些自定义元变量并遵循教程等 - 我已经到了顶级元数据字段正确保存但第二个(宽度)无法保存的点 - 是否有任何明显的我在这里做错了?我已经尝试将第二个字段的保存分离到一个单独的函数进行测试,但这也没有用。

    add_action( 'add_meta_boxes', 'youtube_metaboxes' );

    function youtube_metaboxes() {
        add_meta_box('wpt_youtube', 'youtube URL', 'wpt_youtube', 'product', 'side', 'default');
    }

    function wpt_youtube() {
        global $post;
        echo '<input type="hidden" name="youtubemeta_noncename" id="youtubemeta_noncename" value="' .
        wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
        $addyoutube = get_post_meta($post->ID, '_youtube', true);
        echo '<input type="text" name="_youtube" value="' . $addyoutube  . '" class="widefat" />';
        $youtubeWidth = get_post_meta($post->ID, '_width', true);
        echo 'Width: <br /><input type="text" name="_width" value="' . $youtubeWidth  . '" class="widefat" />';
    }

    // Save the Metabox Data
    function wpt_save_youtube_meta($post_id, $post) {
        if ( !wp_verify_nonce( $_POST['youtubemeta_noncename'], plugin_basename(__FILE__) )) {
        return $post->ID;
        }
        if ( !current_user_can( 'edit_post', $post->ID ))
            return $post->ID;
        $addyoutube_meta['_youtube'] = $_POST['_youtube'];
        foreach ($addyoutube_meta as $key => $value) {
            if( $post->post_type == 'revision' ) return;
            $value = implode(',', (array)$value); // If $value is an array, make it a CSV (unlikely)
            if(get_post_meta($post->ID, $key, FALSE)) {
                update_post_meta($post->ID, $key, $value);
            } else {
                add_post_meta($post->ID, $key, $value);
            }
            if(!$value) delete_post_meta($post->ID, $key);
        }

        $addWidth_meta['_width'] = $_POST['_width'];
        foreach ($addWidth_meta as $key => $value) {
            if( $post->post_type == 'revision' ) return;
            $value = implode(',', (array)$value); // If $value is an array, make it a CSV (unlikely)
            if(get_post_meta($post->ID, $key, FALSE)) {
                update_post_meta($post->ID, $key, $value);
            } else {
                add_post_meta($post->ID, $key, $value);
            }
            if(!$value) delete_post_meta($post->ID, $key);
        }
    }

add_action('save_post', 'wpt_save_youtube_meta', 1, 2); // save the custom fields

1 个答案:

答案 0 :(得分:0)

我看过这篇文章:

http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-1-intro-and-basic-fields/

似乎是一种更好的创建自定义元框的方法。