wake-up-neo.net

Warum werden meine ausgewählten Metadaten nicht gespeichert?

Ich arbeite gerade an einer Site, auf der ich verschiedene Arten von Metadaten für einen benutzerdefinierten Beitragstyp speichern muss.

Gegenwärtig habe ich eine Texteingabe, die problemlos gespeichert werden kann, aber ich habe Mühe, ein Auswahlfeld dazu zu bringen, dasselbe zu tun.

Dies ist die Funktion, die das Auswahlfeld ausgibt:

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 }

Und das ist die Funktion, die alle Daten speichert:

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);
        }
    }
}

Hinweise darauf, was ich falsch mache, wären sehr dankbar.

1
James O'Neill

Ok, ich habe das Problem selbst gelöst.

Es stellte sich heraus, dass ich das name="_department"-Attribut in einem anderen Feld dupliziert hatte, das mit meinem Auswahlfeld in Konflikt stand. Meine Auswahl speichert ganz gut, jetzt habe ich das bearbeitet.

1
James O'Neill