GET_POST_META在创建元数据时出现错误

时间:2020-10-09 作者:Sash_007

我一直在关注如何为wordpress帖子创建自定义元框的Autorial,但它给出了错误

这是我的完整代码

//Add Metabox
function diwp_custom_metabox(){
    //add_meta_box(metabox_id,metabox name,callback function,metabox location(page,post,custom post etc),context-(normal,side,advanced),piority())
    add_meta_box(\'diwp-metabox\',\'My Custom Metabox\',\'diwp_post_metabox_callback\',\'post\',\'normal\');
}

//add action
add_action(\'add_meta_boxes\',\'diwp_custom_metabox\');
//metabox callback function

function diwp_post_metabox_callback(){
    // echo \'hi i am diwp metabox\';
    ?>
    <div class="row">
      <div class="label">Post Reading Time</div>
      <div class="fields">
        <input type="text" name="_diwp_reading_time" value="<?php get_post_meta($post->ID,\'post_reading_time\',true); ?>">
      </div>
    </div>
    <?php
}

function diwp_save_custom_metabox(){
    // update_post_meta($post_id,$meta_key,$meta_value,$prev_value);
    global $post;
    if(isset($_POST[\'_diwp_reading_time\'])){
        update_post_meta($post->ID,\'post_reading_time\',$_POST[\'_diwp_reading_time\']);
    }
}

add_action(\'save_post\',\'diwp_save_custom_metabox\');
错误屏幕截图enter image description here

任何帮助都将不胜感激,谢谢

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

那里的错误清楚地表明有一个未定义的变量(post) 在metabox回调函数中。

所以你需要定义$post 在您的职能部门中:

// The $post variable is passed by WordPress.
function diwp_post_metabox_callback( $post )
你也应该这样做diwp_save_custom_metabox() 函数(连接到save_post):

// Here, $post is the second parameter.
function diwp_save_custom_metabox( $post_ID, $post ) {
    // ...
}

// Don\'t forget to set the 4th parameter to 2:
add_action( \'save_post\', \'diwp_save_custom_metabox\', 10, 2 );
或者,使用get_post() 而不是global 电话:

// Here, $post is the second parameter.
function diwp_save_custom_metabox( $post_ID ) {
    $post = get_post( $post_ID ); // like this
//  global $post;                 // not this

    // ...
}

add_action( \'save_post\', \'diwp_save_custom_metabox\' );