web-dev-qa-db-fra.com

Enregistrer la valeur par défaut pour les méta-publications vides ou manquantes

J'utilise WordPress et j'utilise un champ personnalisé qui porte le nom ecpt_carprice pour chaque message publié, le champ est enregistré dans wp_postmeta identique à l'image jointe:

Certaines de mes voitures (publications) n'ont pas de clé méta ecpt_carprice.
Pouvez-vous me fournir un moyen (requête WordPress/PHP ou SQL) de stocker pour chaque message sans la méta-entrée une nouvelle entrée de valeur 0?

J'ai ce code mais je ne sais pas comment l'utiliser

if ( has_term( '', 'car_brand' )) {

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

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

}

2
Tayssir Ch

Si vous voulez et n'avez besoin que de faire ce que @tf a suggéré, c'est-à-dire d'afficher un 0 si aucune valeur n'est présente, vous pouvez construire une fonction comme ceci:

function wpse121165_return_carprice() {
    $ecpt_carprice = get_post_meta($post->ID, 'ecpt_carprice', true);
    if(! empty( $ecpt_carprice ) ){
        return $ecpt_carprice;
    } else {
        return 0;
    }
}

Utilisez la fonction comme ceci: echo wpse121165_return_carprice();

Si vous avez vraiment besoin de mettre à jour votre base de données, vous devez le faire d'une autre manière. Le code ci-dessous devrait vous donner un aperçu de la façon de le faire:

 function wpse121165_update_carprice_meta() {
      // args to query for your key
      $args = array(
        'post_type' => 'your_post_type',
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key' => 'ecpt_carprice',
                'value' => 'bogus', // you have to pass a value
                'compare' => 'NOT EXISTS'
            ),
            array(
                'key' => 'ecpt_carprice',
                'value' => ''
            )
        ),
        'fields' => 'ids'
      );
      // perform the query to get back an array of ids
      $not_exist_or_empty_ids = new WP_Query( $args );

      foreach ( $not_exist_or_empty_ids as $id ) {
          update_post_meta($id, 'ecpt_carprice', '0');
      }
 }

Utilisez la fonction comme ceci: wpse121165_update_carprice_meta();. Si vous mettez ceci dans votre functions.php et effectuez votre méta-mise à jour sur la base de données, assurez-vous de la désactiver par la suite et de ne pas l'appeler encore et encore.

2
Nicolai