自定义Meta Box:值保存在WordPress DB中,但不显示在编辑屏幕的输入字段中

时间:2020-03-06 作者:BuddyHoli

我有这样一个自定义字段:

function nutrix_display_recipe_mb( $post_object ) {
global $post;
wp_nonce_field( basename( __FILE__ ), \'recipe_mb_nonce\' );

// PREPARATION TIME FIELD
    $html = \'\';  
    $label = __( \'Preparation Time (min): \', \'nutrix\' ); 
    $current_preptime = get_post_meta( $post_object->ID, \'nutrix_preparation_time\', true );

    $html .= \'<div class="nutrix-div-25"><p><label for="nutrix_preparation_time">\' . $label . \'</label><br /><input type="number" id="nutrix_preparation_time" name="nutrix_preparation_time" value="<?php echo $current_preptime; ?>" min="0" />\';

    $html .= \'</input></p></div>\';

    echo $html;
}

function nutrix_save_recipe_mb( $post_id, $post ) {
// AUTOSAVE CHECK, NONCE AND MORE
if ( $post->post_type == \'nutrix-recipe\' ) {
if ( isset( $_REQUEST[\'nutrix_preparation_time\'] ) )
            update_post_meta( $post_id, \'nutrix_preparation_time\', sanitize_text_field( $_POST[\'nutrix_preparation_time\'] ) );
        else
            delete_post_meta( $post_id, \'nutrix_preparation_time\' );


    }
}
更新帖子时该字段正在保存,我可以在phpmyAdmin中看到该值。但由于某些原因,在输入保存的帖子时,保存的值不会显示在输入中。

根据我的基本知识分析,这只能由以下原因引起:

$current_preptime = get_post_meta( $post_object->ID, \'nutrix_preparation_time\', true );
或者这个

<input.... value="<?php echo $current_preptime; ?>" ...>
我没有发现我的错误。非常感谢你们的帮助。

1 个回复
最合适的回答,由SO网友:Vitauts Stočka 整理而成

您正在为您的$html 价值,但有<?php echo ...?> 在那里,事件永远不会运行,因为它位于单引号字符串中。像这样修复输入字段的部件

$html .= \'<div> ... <input ... value="\' . $current_preptime . \'"> ...\';

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register