web-dev-qa-db-fra.com

Comment supprimer définitivement une post méta entrée?

delete_post_meta semble simplement effacer la valeur d'une clé méta donnée. Cela ne supprime pas complètement la ligne. J'ai beaucoup creusé, mais je n'arrive pas à trouver une fonction qui supprime complètement la post-méta-entrée.

S'il vous plaît, quelqu'un pourrait-il m'indiquer dans la bonne direction? Dois-je utiliser $wpdb pour supprimer complètement la ligne ou existe-t-il une fonction dissimulée pour le faire pour moi?

Modifier:

Les éléments suivants ont été testés et fonctionnent, mais ils utilisent $wpdb. Est-ce la bonne façon de le faire?

$wpdb->delete( $wpdb->postmeta, array( 'post_id' => 744, 'meta_key' => 'referrers' ), array( '%d', '%s' ) );

Edit2:

Voici mon ancien code:

// $post_id contains an integer value
// $referrers contains an array
$referrers = get_post_meta( $post_id, 'referrers', true );
for ( $i = 0; $i < count( $referrers ); $i++ ) {
    delete_post_meta( $post_id, "referrers_{$i}_contact_id" );
    delete_post_meta( $post_id, "_referrers_{$i}_contact_id" );
    delete_post_meta( $post_id, "referrers_{$i}_rule" );
    delete_post_meta( $post_id, "_referrers_{$i}_rule" );
    delete_post_meta( $post_id, "referrers_{$i}_amount" );
    delete_post_meta( $post_id, "_referrers_{$i}_amount" );
}

Ce qui précède fonctionne, mais il efface simplement les valeurs. Est-ce que j'utilise est incorrectement? Ai-je oublié quelque chose par accident?

1
adamj

delete_post_meta will supprime la méta-ligne. delete_post_meta utilise également wpdb la classe pour supprimer les méta-lignes. Pouvez-vous nous montrer le code complet.

Pour votre information, delete_post_meta exécute la commande mysql suivante

DELETE FROM wp_postmeta WHERE meta_id IN( "85" );

via la fonction delete_metadata. meta_id 85 n'est donné qu'à titre d'exemple. C'est dynamique. vous n'avez donc pas besoin de lancer vos propres requêtes mysql pour éviter les bugs et les risques de sécurité.

NOTE: Je n'ai pas assez de réputation pour commenter, alors donnez ce message comme réponse.

2
WPTC-Troop