Werte innerhalb eines benutzerdefinierten Felds, um zu bestimmen, welche Kategorienposts angezeigt werden sollen

Ich habe ein kleines Problem, während ich versuche, Beiträge aus bestimmten Kategorien auf der Vorderseite anzuzeigen. Ich habe ein benutzerdefiniertes Feld erstellt, dessen Schlüssel ‘related_categories’ ist, und ich habe verschiedene Kategorien mit Slugs wie ‘Armee’, ‘Marine’, ‘Luftwaffe’ usw.

Beim Erstellen eines neuen benutzerdefinierten Posts gebe ich die Slugs verschiedener Kategorien in das benutzerdefinierte Feld “verwandte Kategorien” ein, z. B. “navy”, “airforce”, und dies ist der Code, den ich in meiner Vorlagendatei für das benutzerdefinierte Feld verwende Werte im Array ‘tax_query’.

ID, 'related_categories', true) ); $the_query = new WP_Query( array( 'post_type' => 'medals', 'posts_per_page' => 3, 'tax_query' => array( array( 'taxonomy' => 'medal-categories', 'field' => 'slug', 'terms' => $related, ), ), ) ); while ( $the_query->have_posts() ) : $the_query->the_post(); //loop starts after this 

Jetzt ist das Problem, dem ich gegenüberstehe, dass, wenn ich nur einen Slug in das benutzerdefinierte Feld “verwandte Kategorien” für zB “Marine” eingebe, dann die Beiträge aus der Kategorie “Marine” erfolgreich angezeigt werden, wenn ich mehr als eine Schnecke hineingebe das benutzerdefinierte Feld “verwandte Kategorien”, z. B. “Marine”, “Armee”, dann werden die Beiträge nicht angezeigt.

Ich habe versucht, nach einer Lösung im Internet zu suchen, konnte aber keine finden, daher wäre jede Hilfe willkommen. Vielen Dank.

Solutions Collecting From Web of "Werte innerhalb eines benutzerdefinierten Felds, um zu bestimmen, welche Kategorienposts angezeigt werden sollen"

Das Problem besteht darin, dass Sie eine durch Kommas getrennte Liste von Termen übergeben, nicht ein Array von Termen. Wenn Sie beispielsweise “Armee, Marine, Luftwaffe” im benutzerdefinierten Feld eingeben:

 $related = array ( get_post_meta($post->ID, 'related_categories', true) ); //$related = array('army,navy,airforce'); //What you need is //$related = array('army','navy,'airforce'); 

Sie müssen jeden Ausdruck in ein Array-Member umwandeln, zum Beispiel mit explode :

 $related = explode(',', trim( get_post_meta($post->ID, 'related_categories', true) ) ); 

Wie auch immer, ich denke, dass du anders denken solltest, um deinen Zweck zu erreichen. Die Verwendung eines benutzerdefinierten Felds zum manuellen Speichern einer Liste mit verwandten Kategorien ist aus meiner Sicht nicht angemessen. Sie könnten beispielsweise eine hierarchische Taxonomie erstellen und verwandte Kategorien unter demselben übergeordneten Element festlegen oder die Core-Tag-Taxonomie zum Festlegen von Beziehungen usw. verwenden. Ich denke, dies ist besser und “natürlicher” als die Verwendung eines benutzerdefinierten Felds zum Speichern eines Satzes von Taxonomie Begriffen.