不能保存元数据在自定义插件自定义metabox


Can't save metadata in custom plugin with custom metabox?

使用codeacademy.cc(https://www.youtube.com/watch?v=33bilBgZrb4)的教程系列,我尝试创建以下插件。但是,它不保存元数据。我不知道这里发生了什么,我不知道为什么它不保存它。我将不同的"die"函数放入if子句中进行调试。看起来$_POST['the-key']没有设置。当我尝试使用else子句add_meta_data时,它也没有改变什么。有人知道我该如何修复这个代码吗?

我还尝试了不同的钩子:

  • pre_post_update
  • save_post
  • post_updated

(添加一行,因为stackoverflow有列表+代码的问题)

<?php
/*
* Plugin Name: Zenva Video Widget
* Plugin URI: http://www.zenva.com
* Description: Learn how to create shortcodes and to retrieve data from the web.
* Version: 1.0
* Author: IQ Development
* Author URI: http://www.zenva.com
* License: GPL2
*/
add_action('add_meta_boxes', 'zvavw_add_metabox');
add_action('save_post', 'zvavw_save_metabox');

function zvavw_add_metabox() {
    add_meta_box('zvavw_youtube', 'YouTube Video Link', 'zvavw_youtube_handler', 'post');
}
function zvavw_youtube_handler() {
    $value = get_post_custom($post->ID);
    $youtube_link = esc_attr($value['zvavw_youtube'][0]);
    echo '<label for="zvavw_youtube">YouTube Video Link</label><input type="text" id="zvavw_youtube" value="' . $youtube_link . '" />';
}
function zvavw_save_metabox($post_id) {
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if(!current_user_can('edit_post')) {
        return;
    }
    if(isset($_POST['zvavw_youtube'])) {
        update_post_meta($post_id, 'zvavw_youtube', esc_url($_POST['zvavw_youtube']));
    }
}
?>

我不记得我是否忘记了ID或name,但我在输入框上忘记了其中一个,因此它没有获得任何值。因此,如果有人遇到这个问题,请检查输入标签上的ID/name