使用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有list +代码的问题)
<?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']));
}
}
?>
答案 0 :(得分:0)
我不记得我是否忘记了身份证或姓名,但我在输入框中忘记了其中一个,因此它没有任何价值。因此,如果有人碰到这个问题,请检查输入标签上的ID /名称。