Guten Morgen,
ich bin gerade dabei, mir eine Funktionalität zu bauen, um Feldwerte verschiedener Posts auszulesen. Das ganze soll ein Seminarmanagement mit Anmeldemöglichkeit werden. Dabei habe ich mir mit CPT UI verschiedene Inhaltstypen, also Posts generiert und mit ACF die benötigten Felder erstellt.
Wenn ich mir nun ein Seminarpost anzeigen lassen (ich mache das unter Oxygen mit EasyPosts) soll über eine Funktion alle Feldwerte in ein Array gepackt werden, wobei andere von mir definierte Posts dem Seminarpost zugeordnet sind und in meinem erzeugten Array als Post-ID ausgelesen werden. Diese sollen dann hernach über die selbe Funktion weiter ausgelesen werden, damit ich letztendlich ein Mehrdimensionales Array erhalte, in dem mir alle benötigten Daten in weiterverwendbarer Form zur Verfügung stehen.
Ich bin alles andere als php-Spezialist, recherchiere mir aber das Nötigste zusammen und schaffe es immerhin, das zu erreichen, was ich möchte (mit wahnsinnigem Zeitaufwand, aber ich versuche schon, so viel wie möglich selbst zu machen, um dabei zu lernen)
Mein Bitte nur dazu: würde vielleicht einmal jemand über meine Funktion schauen, um mir ein Feedback zu machen, ob der Code soweit ok ist (oder ich vielleicht Sachen eingebaut habe, die man so nicht machen sollte) und ob dieses Vorgehen des Auslesens von verschachtelten Posts auch mit einfacheren Mitteln bewerkstelligt werden kann.
Ich würde mich sehr freuen, ein Feedback zu bekommen, würde mir etwas Sicherheit geben, so weiter zu machen wie jetzt angefangen.
Die Weiterverarbeitung der Unterposts habe ich soweit noch nicht umgesetzt, stelle mir aber vor, daß meine Funktion das Array der ersten Ebene als Wert zurückgibt und dann über eine "Dachfunktion" die Unterposts ausgelesen werden. Sollte dann eigentlich kein Problem mehr sein ;)
Danke und Grüße, chapolote
Hier die Funktion:
function getFieldValues($postID,$post_type_name){
//Array aller Feldwerte eines Posts
$field_values_array = array();
//Der Titel des Posts
$post_title= get_the_title( $postID );
//print_r($post_title);
$field_values_array['posttitle'] = $post_title;
$field_values_array['posttyp'] = $post_type_name;
//generiere Array der Post-Felder
$fields = get_fields($postID);
//Loop über alle Feldwerte
$post_field = array();
$post_array = array();
$field_array = array();
foreach($fields as $index=>$value) {
$field = get_field_object($index, $postID);
//echo('<pre>');
//var_dump($field);
//echo('</pre>');
if ($field['type'] == 'post_object') {
$post_object_id = $field['value'];
if (is_array($post_object_id)) {
foreach( $post_object_id as $post_id ){
//generiere Feldwerte aller Posts
$post_array[]= $post_id;
}
$post_field[$field['label']] = $post_array;
} else {
//generiere Feldwerte des Posts
$post_field[$field['label']] = $post_object_id;
}
//$field_values_array['post'] = $post_field;
} else if (is_array($field['value'])) {
$field_fieldvalue = array();
foreach( $field['value'] as $field_value ){
//liste Feldwerte
$field_fieldvalue[]= $field_value;
}
$field_array[$field['label']]=$field_fieldvalue;
} else {
$field_values_array[$field['label']] = $field['value'];
}
}
$field_values_array['is_array'] = $field_array;
$field_values_array['is_post'] = $post_field;
echo('<pre>');
var_dump($field_values_array);
echo('</pre>');
}
Alles anzeigen