Erhalte den korrekten Meta-Wert mit get_post_meta

Ich habe versucht, die function get_post_meta () zu verwenden, um die Meta-Werte meiner Posts zu erhalten. Zu meiner Überraschung gibt es jedoch ein Array, das wieder Arrays enthält! Also schaute ich in das Array der zweiten Ebene und konnte eine Liste von Metawerten mit diesem Code erhalten:

$postmeta = get_post_meta($resultid, '', true); foreach ($postmeta as $meta_key => $v) { foreach ($v as $kk => $meta_value) { echo "$meta_key => $meta_value.\n"; } } 

Obwohl ich $single = true lese die Dokumentation hier: https://developer.wordpress.org/reference/functions/get_post_meta/
Es gibt mir noch 2 Werte für den gleichen Metaschlüssel.

ZB bekomme ich diese Liste gedruckt:

 select_inco => fob. select_inco => fob. price_input_currency => usd. price_input_currency => usd. price_input => 58. price_input_to => . price_per => . price_comments => 

Meine Frage:

Woher weiß ich, was der Unterschied zwischen diesen doppelten Werten wie select_inco und price_input_currency und welcher ist der richtige?

So füge ich Meta-Werte aus einem Formular hinzu und bearbeite sie auch:

 update_post_meta($post_id, 'select_inco', $_POST['select_inco']); 

Solutions Collecting From Web of "Erhalte den korrekten Meta-Wert mit get_post_meta"

get_post_meta() ist einfach nur ein Wrapper für get_metadata() . Wenn wir uns die Quelle oder get_metadata() , werden wir feststellen, dass, wenn $key leer ist, $single wegen der folgenden Codezeilen ignoriert wird, bevor $single angewendet wird

 if ( ! $meta_key ) { return $meta_cache; } 

In deinem Anwendungsfall kann $single nie seine Aufgabe erfüllen.

Die Doppelschlüssel => Wert-Paare bedeutet einfach, dass Sie ein Array von Werten für diesen bestimmten Schlüssel haben, und die beiden Werte im Array sind den gleichen Wert. Dies wird durch einen Fehler in Ihrem Code verursacht, der für das Speichern von Daten in Ihrem benutzerdefinierten Feld verantwortlich ist. Sie sollten nach diesem bestimmten Code suchen und das betreffende Problem sortieren.

Ich kann dir nicht sagen, welcher der richtige Wert ist und was nicht, das kannst du auch nicht beantworten. Wie bereits erwähnt, müssen Sie Ihren Code für das Speichern Ihrer benutzerdefinierten Felddaten sortieren.

In der Zwischenzeit können Sie aus Ihrer foreach-Schleife ausbrechen, um nur den ersten Wert aus einem benutzerdefinierten Feld zu erhalten, aber ich empfehle dies nicht als Lösung, die Lösung beinhaltet, zu sortieren, wie Sie Ihre benutzerdefinierten Felddaten speichern

 $postmeta = get_post_meta($resultid, '', true); foreach ($postmeta as $meta_key => $v) { foreach ($v as $kk => $meta_value) { echo "$meta_key => $meta_value.\n"; break; } }