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;

}

機能するもの: メタボックスは指定したページに表示され、編集可能です 機能しないもの: 保存中...

4

1 に答える 1

1

(または) フィールドのname属性は、配列にアクセスするときに使用する必要があります。sは「キャリア サブタイトル」、「キャリア テキスト 1」、および「キャリア テキスト 2」であるため、渡された値にアクセスするには、、、またはを使用 する 必要があります。inputtextarea$_POSTname$_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"]);

または、3 つの値を別々に保存する必要がある場合は、次のようにします。

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

career_meta値を取得すると、対応する変更が行われます。

于 2012-10-24T11:08:05.690 に答える