web-dev-qa-db-ja.com

選択したメタデータが保存されないのはなぜですか。

カスタム投稿タイプ用にいくつかの異なるタイプのメタデータを保存する必要があるサイトで作業しています。

現在私は問題なく保存しているテキスト入力を持っていますが、同じことをするためにselectフィールドを得るのに苦労しています。

これは選択フィールドを出力する関数です。

function kwi_department_input() {
    // Define function to create meta box for team member department.

    global $post;
    echo '<input type="hidden" name="teammeta_noncename" id="teammeta_noncename" value="' . wp_create_nonce(plugin_basename(__FILE__)) . '" />';
    $department = get_post_meta($post->ID, '_department', true); ?>

    <select name="_department" id="_department">
        <option value="Directors" <?php selected($department, 'Directors'); ?>>Directors</option>
        <option value="Finance / Admin" <?php selected($department, 'Finance / Admin'); ?>>Finance / Admin</option>
        <option value="Customer Service Team" <?php selected($department, 'Customer Service Team'); ?>>Customer Service Team</option>
        <option value="Commercial Team" <?php selected($department, 'Commercial Team'); ?>>Commercial Team</option>
    </select>
<?php }

そしてこれがすべてのデータを保存する関数です。

function kwi_save_team_meta($post_id) {
    if( !wp_verify_nonce( $_POST['teammeta_noncename'], plugin_basename(__FILE__) )) {
        return $post_id;
    }

    if( !current_user_can( 'edit_post', $post_id ) ) {
        return $post_id;
    }

    $team_meta = array(
        '_department' => $_POST['_department'], 
        '_languages' => $_POST['_languages'] // Languages is the text input that is saving with no issue.
    );

    foreach($team_meta as $key => $value) {
        if(get_post_meta($post_id, $key, FALSE)) {
            update_post_meta($post_id, $key, $value);
        } else {
            add_post_meta($post_id, $key, $value);
        }
        if(!$value) {
            delete_post_meta($post_id, $key);
        }
    }
}

私が間違っていることについてのどんなポインターでも大いに感謝されるでしょう。

1
James O'Neill

さて、私は自分で問題を解決しました。

私のselectフィールドと衝突していた別のフィールドでname="_department"属性が重複していました。私の選択では、今、私はそれを編集しました。

1
James O'Neill