Wordpress自定义帖子类型元框不保存到数据库

时间:2016-03-25 19:08:06

标签: php wordpress custom-post-type meta-boxes

我创建了自定义帖子类型'媒体页面项目'我试图添加元框。目前,元框正在显示但不保存到数据库。我已经尝试了几种不同的方法,它们似乎都没有保存到数据库中。

调试已打开,但我目前看不到任何错误。

非常感谢任何帮助!

//add article link to media page item
add_action( 'admin_menu', 'gruman_article_link_create' );
add_action( 'save_post', 'gruman_article_link_save', 10, 2 );

function gruman_article_link_create() {
    add_meta_box( 'gruman-article-link', 'Article Link', 'gruman_article_link', 'media-page-items', 'advanced', 'high' );
}

function gruman_article_link( $post ) { 
    // retrieve the _gruman_article_title current value
    $current_article_link = get_post_meta( $post->ID, '_gruman_article_link', true );

?>
    <p>
        <label>Article Link</label>
        <br />
        <input name="gruman-article-link" id="article-link" style="width: 97%;"><?php $current_article_link; ?>/>
        <input type="hidden" name="gruman_article_link_nonce" value="<?php echo wp_create_nonce( plugin_basename( __FILE__ ) ); ?>" />
    </p>
<?php }

function gruman_article_link_save( $post_id ) {
    // verify taxonomies meta box nonce
    if ( !isset( $_POST['gruman_article_link_nonce'] ) || !wp_verify_nonce( $_POST['gruman_article_link_nonce'], basename( __FILE__ ) ) ){
    return $post_id;
    }

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

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

    // store article title value
    if ( isset( $_REQUEST['gruman-article-link'] ) ) {
        update_post_meta( $post_id, '_gruman_article_link', sanitize_text_field( $_POST['gruman-article-link'] ) );
    }

}

1 个答案:

答案 0 :(得分:1)

在wp_create_nonce中,您使用的是plugin_basename( __FILE__ )。 当您验证nonce时,使用basename( __FILE__ )作为操作名称。 那些价值观并不相同。第一个将返回类似my-plugin/my-plugin.php的内容,第二个将返回my-plugin.php 这就是为什么我认为wp_verify_nonce返回False而你的数据没有保存。