2016-03-23 4 views
1

Ich habe einige benutzerdefinierte Beitragstyp "Video" und ich habe einige benutzerdefinierte ACF-Felder hinzugefügt ("video_path", "autor_name" und "audio_author"). Ich bin Erzeugung Beiträge in dieser Art programmatisch wie folgt aus:ACF Felder Wert nicht verfügbar, bis Post manuell speichern

$video_post_params = array(
    'post_title' => wp_strip_all_tags($video_title), 
    'post_status' => 'publish', 
    'post_author' => 1, 
    'post_type'  => 'video' 
); 
$video_id = wp_insert_post($video_post_params); 
update_field('video_path', $video_path, $video_id); 
update_field('author_name', $video_author, $video_id); 
update_field('audio_author', $audio_author, $video_id); 

Alle Werte werden eingefügt gut - wenn ich die Post in Back-End öffnen alles ist in Ordnung. Wenn ich jedoch versuche, diese Werte zu verwenden, bekomme ich nichts?!?

ich Werte von Template-Dateien wie folgt zu lesen:

get_field('video_path', $video_id) 

Und wenn ich die Post öffnen und einfach ohne speichere alles ändern beginnt in der Regel arbeiten, und ich bin immer ACF Post Felder normalerweise danach . Posts, die manuell vom Back-End erstellt werden, funktionieren immer gut.

Was mache ich falsch? Benötige ich beim Generieren von Posts aus Code einen zusätzlichen Schritt?

Das Problem wird hier berichtet: http://support.advancedcustomfields.com/forums/topic/programmatic-post-insertion-acf-fields-and-the-save_post-hook/

Aber diese Lösung funktioniert offensichtlich nicht für mich - meine update_field() Funktionen bereits unmittelbar nach wp_insert_post().

Antwort

2

Es gefunden!

Beim Einfügen des ACF-Feldes muss der Wertfeldschlüssel verwendet werden. Wenn der Schlüsselname verwendet wird, wird stattdessen alles auf den ersten Blick eingefügt, aber der Wert ist nicht verfügbar, bis der Beitrag manuell gespeichert wurde. So ist es wie:

update_field('field_56e683ab6265f', $video_path, $video_id); 
update_field('field_56e68415b5c4b', $video_author, $video_id); 
update_field('field_56e6842d58740', $audio_author, $video_id); 

was für ein Chaos ....

Verwandte Themen