保存具有多个字段的元框

问题描述 投票:0回答:1

所以,在花了几个小时寻找保存我的元框的最简单的解决方案之后,却找不到任何可以帮助我的东西...... 我正在尝试保存这些元框(我将第一个元框放在下面的示例中,其他元框几乎是重复的),而我使用的保存方法根本不执行任何操作。你能告诉我我在这里做错了什么吗?保存方法是我同事制作的另一个插件,但我似乎无法让它工作......

add_action('admin_init','page_spec_meta');
function page_spec_meta()
{
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;     $template_file = get_post_meta($post_id,'_wp_page_template',TRUE);
    if ($template_file == 'index.php') 
    {
    add_meta_box("career-meta", "Career", "career_meta", "page", "normal", "high");
    add_meta_box("business-meta", "Business", "business_meta", "page", "normal", "high");
    add_meta_box("fabulous-meta", "Fabulous", "fabulous_meta", "page", "normal", "high");
    add_meta_box("network-meta", "Network", "network_meta", "page", "normal", "high");
    add_meta_box("future-meta", "Future", "future_meta", "page", "normal", "high");
    }
}

// --- METABOX: CAREER ... CONTENTS --- //
function career_meta(){
    global $post;
    $career = get_post_meta( $post->ID, 'career', true );
?>
    <label for="career subtitle">Subtitle</label><input type="text" class="widefat" id="career-subtitle" name="career subtitle" value="<?php echo $career; ?>" />
    <label for="career text 1">Left Column</label><textarea class="widefat" id="career-text-1" name="career text 1" value="<?php echo $career; ?>"></textarea>
    <label for="career text 2">Right Column</label><textarea class="widefat" id="career-text-2" name="career text 2" value="<?php echo $career; ?>"></textarea>
<?php }

// --- METABOX: CAREER ... SAVE --- //
add_action('save_post', 'save_career');
function save_career(){
    global $post;
    update_post_meta($post->ID, "career", $_POST["career"]);
}

add_action('save_post','function_save_var');
function function_save_var()
{
  if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
    return $post_id;

}

什么有效:元框显示在我指定的页面上,并且可以编辑 什么不起作用:正在保存...

wordpress save meta-boxes
1个回答
2
投票

访问

name
数组时需要使用
input
(或
textarea
)字段的
$_POST
属性。 您的
name
是“职业副标题”、“职业文本 1”和“职业文本 2”,因此您需要使用
$_POST["career subtitle"]
$_POST["career text 1"]
$_POST["career text 2"]
来访问传递的值。

我不确定浏览器转义空格是否会出现问题,并且 PHP 需要转义它们才能在

$_POST
中找到它们 - 我可能会用下划线替换名称中的空格,以防万一,例如

<label for="career_subtitle">Subtitle</label><input type="text" class="widefat" id="career-subtitle" name="career_subtitle" value="<?php echo $career; ?>" />

然后在

save_career

update_post_meta($post->ID, "career", $_POST["career_subtitle"]);

或者,如果您需要单独存储三个值:

update_post_meta($post->ID, "career_subtitle", $_POST["career_subtitle"]);

当您检索值时,

career_meta
会发生相应的变化。

© www.soinside.com 2019 - 2024. All rights reserved.