web-dev-qa-db-fra.com

pouvez-vous définir une valeur par défaut pour un champ personnalisé

Je cherche à définir une valeur par défaut pour un champ personnalisé spécifique, au cas où le client n'ajoute pas dans le champ personnalisé un numéro spécifique lui est déjà associé.

si vous choisissez cat = 22, ce champ personnalisé est automatiquement ajouté à la publication avec une valeur par défaut qui, espérons-le, permettra au client d’ajouter le numéro approprié.

Je pense que cela peut être accompli par une fonction globale mais mon cerveau ne traite tout simplement pas cela pour le moment.

1
jeremy rice

Vous pouvez le vérifier en ajoutant un point d'ancrage à l'action save_post. De cette manière, toutes vos publications auront une valeur par défaut pour un champ personnalisé.

add_action( 'save_post', 'wpse8170_save_post', 10, 2 );
function wpse8170_save_post( $post_id, WP_Post $post ) {
    if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || !current_user_can( 'edit_post' ) ) {
        return;
    }

    if ( has_category( 22, $post_id ) && !get_post_meta( $post_id, 'my-custom-field', true ) ) {
        update_post_meta( $post_id, 'my-custom-field', 'my default value' );
    }
}
2
Eugene Manuilov

Vous ne feriez pas cela via un global, vous utiliserez simplement la fonctionnalité par défaut de add_post_meta.

// your loop
if ( in_category(22)) {

    //check if the meta field has a value
    $meta_values = get_post_meta($post->ID, 'your_meta_key', true);

    if(empty($meta_values)){
    //add a default value
    add_post_meta($post->ID, 'your_meta_key', 'some default value');
    }
}

Référence: http://codex.wordpress.org/Custom_Fields

0
Wyck