get_post_meta gibt bool (false) zurück

Ich habe getestet und versucht herauszufinden, wo es möglicherweise schief geht, aber ich stecke in diesem Teil fest. Der get_post_meta () gibt keinen meiner Werte zurück, getestet mit einem var_dump (get_post_meta (1)), dies scheint ihn zurückzugeben, aber beim Zugriff auf diesen Schlüssel var_dump (get_post_meta (1, ‘key_name’)) gibt er ein bool zurück (false) ).

Auch der folgende Weg funktioniert nicht für mich, var_dump (get_post_meta (1, ‘key_name’, true)); als Standard ist es falsch, also auch dies überprüft. In meiner database existiert der Schlüssel 100% und hat Werte, auch die ID ist korrekt.

bool(false)} var_dump(get_post_meta(1,'key_name',true); // bool(false) ?> 

Ist da etwas nicht in Ordnung mit WordPress oder fehlt mir hier etwas, ich habe einen riesigen Datenspeicher, könnte das ein Problem für WordPress sein? Verwenden der neuesten WordPress-Version, die durch den Download von wordpress.org verfügbar ist.


Bearbeiten: Weitere Informationen erforderlich

Danke für deinen Kommentar. Ich benutze einfach die add_post_meta () und update_post_meta (). Versteh das nicht, ich arbeite auch jeden Tag mit diesem Thema, aber ich habe noch nie zuvor etwas mit meinem Code gesehen. Innerhalb des Admin-Teils funktioniert es ohne Probleme. der Code:

  

Kehrt zurück

 // First var_dump array(4) { ["agenda_postmeta"]=> array(1) { [0]=> string(843) "(serialized data string, hide this for privacy reasons on my comment)" } ["agenda_date"]=> array(1) { [0]=> string(10) "2016-10-08" } ["agenda_location"]=> array(1) { [0]=> string(17) "Jaarbeurs Utrecht" } ["agenda_city"]=> array(1) { [0]=> string(7) "Utrecht" } } // Second var_dump array(1) { [0]=> bool(false) } // Third var_dump bool(false) 

Bearbeiten: Zusätzliche Informationen hinzufügen / aktualisieren postmeta

Unten ist der Code, der verwendet, um dies in meiner database zu speichern, es funktioniert, weil die database ihre Schlüssel / Werte hat.

Datenbankwerte nach post_id

 // Check for update or add if( $has_id != 0 ) { update_post_meta( $post_id, 'agenda_postmeta', $postmeta ); update_post_meta( $post_id, 'agenda_date', date("Ymd", strtotime($_POST["party_date"])) ); update_post_meta( $post_id, 'agenda_location', $_POST["party_location"] ); update_post_meta( $post_id, 'agenda_city', $_POST["party_city"] ); } else { // If no posted_id available insert post_meta add_post_meta( $post_id, 'agenda_postmeta', $postmeta ); add_post_meta( $post_id, 'agenda_date', date("Ymd", strtotime($_POST["party_date"])) ); add_post_meta( $post_id, 'agenda_location', $_POST["party_location"] ); add_post_meta( $post_id, 'agenda_city', $_POST["party_city"] ); } 

Solutions Collecting From Web of "get_post_meta gibt bool (false) zurück"

Anscheinend wurden die serialisierten Daten beschädigt, der Aufruf des Feldes per Abfrage hat diesen Fehler ergeben. WordPress gibt keinen Fehler zurück, wenn die serialisierten Daten nur errorshaft sind (false).

Getriggers dies, indem Sie die serialisierten Daten in einem base64_encode () einfügen / aktualisieren und mit base64_decode () aufrufen. Dies scheint den Trick zu machen und Daten können von der function erneut aufgerufen werden.


Schrieb kleine functionen für mich selbst

Vielleicht gibt es jemanden mit dem gleichen Problem, ich habe diese kleine function zum Überprüfen geschrieben.

 < ?php function wpgz_post_meta( $post_id, $meta_key="", $base64_decode=false ) { if( intval($post_id) ) { $post_meta = get_post_meta( $post_id, $meta_key, true ); $post_meta = $base64_decode !== false ? base64_decode($post_meta) : NULL; $post_meta = explode(PHP_EOL, $post_meta); $post_meta = unserialize($post_meta[0]); if( is_array($post_meta) ) { return $post_meta; } else { send_page_notice("danger", "Invalid format", "Returned value is not a valid array."); } } else { send_page_notice("danger", "Invalid input", "The first value for this function should be an integer number."); } }