Warum wird diese $ wpdb-Abfrage 5 Mal wiederholt?

Ich möchte nur einen Wert für diese Abfrage zurückgeben, es ist in meiner functions.php Datei. Die Idee ist, einen Wert zurückzugeben, den ich benötige, sobald post_meta aktualisiert wurde. Es gibt den gleichen (richtigen) Wert 5 Mal zurück … Ich möchte nur, dass der Wert einmal zurückgegeben wird.

 add_action( 'added_post_meta', function ( $mid, $object_id, $meta_key, $_meta_value) { global $wpdb; $table_name = $wpdb->prefix . 'postmeta'; $results = $wpdb->get_var( "SELECT meta_value FROM " . $table_name . " WHERE meta_key = 'data19' AND post_id = " .$object_id. " " ); }, 10, 4 ); 

Irgendwelche Ideen wie ich nur einen Wert zurückbekommen kann? Ich habe es versucht:

  • Group by bis zum Ende hinzufügen
  • Hinzufügen von OBJECT_K zum Ende
  • mit SELECT DISTINCT
  • Verwenden von MAX vor jedem Wert
  • FIRST vor jedem Wert verwenden
  • mit wp_reset_query()

und einige mehr kann ich nicht einmal erinnern.

Solutions Collecting From Web of "Warum wird diese $ wpdb-Abfrage 5 Mal wiederholt?"

Die wahrscheinlichste Ursache ist, dass der Hook wahrscheinlich mehrmals ausgeführt wird (zB einmal pro Metafeld). Möglicherweise müssen Sie Ihre function so qualifizieren / filtern …

 add_action( 'added_post_meta', function ( $mid, $object_id, $meta_key, $_meta_value) { global $wpdb; if ( $meta_key != 'data19' ) { return; } $table_name = $wpdb->prefix . 'postmeta'; $results = $wpdb->get_var( "SELECT meta_value FROM " . $table_name . " WHERE meta_key = 'data19' AND post_id = " .$object_id. " " ); }, 10, 4 );