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?
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.