web-dev-qa-db-fra.com

Mise à jour de la base de données avec des champs personnalisés avancés

Je rencontre un réel problème lors de la mise à jour d'une table de base de données à l'aide de champs personnalisés avancés dans un type de publication personnalisé.

J'ai une table dans la base de données appelée "wp_company_profiles" avec les champs "adresse_1" et "adresse_2", et j'ai deux champs personnalisés avancés configurés avec les mêmes valeurs. J'essaie de mettre en place un crochet qui mettra à jour les champs de la table lorsqu'un message particulier sera mis à jour.

Vous trouverez ci-dessous le code que j'utilise, mais je ne comprends pas pourquoi cela ne fonctionnera pas.

function update_company_profile($post_ID)  {
    global $wpdb;

    if ($parent_id = wp_is_post_revision( $post_id )) $post_ID = $parent_id;

    $address_1 = get_post_meta($post_ID, 'address_1', true);
    $address_2 = get_post_meta($post_ID, 'address_2', true);

    $sql = $wpdb->query("UPDATE wp_company_profiles SET
            address_1 = '{$address_1}',
            address_2 = '{$address_2}',
            WHERE pid = {$post_ID}");

    $wpdb->query($sql);
}

add_action('save_post', 'update_company_profile');
1
chrisgrace

Vous exécutez la requête deux fois et transmettez le résultat de la première requête à la seconde requête. Essayez ceci. Vous pouvez également envisager d'utiliser la fonction de mise à jour de wpdb au lieu d'exécuter une requête arbitraire, car il ne semble pas que vous procédiez à une purification des données ou à des contrôles de non-conformité. Si vous souhaitez interroger, vous devez utiliser prepare.

function update_company_profile($post_ID)  {
    global $wpdb;

    if ($parent_id = wp_is_post_revision( $post_id )) $post_ID = $parent_id;

    $address_1 = get_post_meta($post_ID, 'address_1', true);
    $address_2 = get_post_meta($post_ID, 'address_2', true);

    $sql = $wpdb->prepare("UPDATE wp_company_profiles SET
            address_1 = '%s',
            address_2 = '%s',
            WHERE pid = %d", $address_1, $address_2, $post_ID);

    $wpdb->query($sql);
}

add_action('save_post', 'update_company_profile');
1
Andrew Bartel