function, die get_posts () mit tax_query verwendet, wenn sie aus functions.php aufgerufen wird

Ich möchte ein Array aller “Bänder” in Taxonomie-Typen erhalten, und das Array später in anderen functionen usw. verwenden. Ich habe eine Datei mit den require() in functions.php und es hat folgendes functionsdefinition und ein Aufruf dazu gleich nach:

 function get_all_bands() { $bands = get_posts(array( 'post_type' => 'model', 'posts_per_page' => -1, // Includes the bands // NOTE: this wont work if this function is called from functions.php // which I need to do. 'tax_query' => array( array( 'taxonomy' => 'types', 'field' => 'slug', 'terms' => 'band', 'operator' => 'IN' ) ) )); return $bands; } print_r(get_all_bands()) 

Wenn ich print_r(get_all_bands()) in einer Vorlage wie header.php , page.php , oder generell jede Vorlage, die für die Anzeige von Sachen zuständig ist, funktioniert es gut. Aber wenn ich print_r(get_all_bands()) in functions.php , gibt es ein leeres Array zurück, so dass ich es für nichts verwenden kann.

Ohne die tax_query funktioniert es überall:

 // This works function get_all_bands() { $bands = get_posts(array( 'post_type' => 'model', 'posts_per_page' => -1 )); return $bands; } print_r(get_all_bands()) 

Ich habe auch versucht, den global $post in die function hinzuzufügen, aber es hat nichts getan.

EDIT: Klärung, wo die functionen definiert und aufgerufen werden.

Solutions Collecting From Web of "function, die get_posts () mit tax_query verwendet, wenn sie aus functions.php aufgerufen wird"

Versuchen Sie zu Testzwecken in Ihrer Datei ” functions.php Folgendes:

 add_action('init', 'my_test_get_all_bands', 99); function my_test_get_all_bands(){ echo '
'; print_r(get_all_bands()); echo '
'; }

Wie ich versucht habe, in meinem Kommentar zu Ihrer Frage zu sagen (und wie Pieter Goosen es besser erklärt hat), wird der tax_query Teil Ihrer get_all_bands() -function nicht funktionieren, wenn Ihre Taxonomien noch nicht registriert wurden, da die Taxonomie- types nicht existieren .

Ich weiß nicht genau, wie Sie die Taxonomie hinzufügen, aber ich persönlich verwende den init Hook mit einer Priorität von 1 , und deshalb habe ich in diesem Beispiel eine Priorität von 99 .

Die lange und kurze Sache ist jedoch, dass Ihre function funktioniert, Sie haben es bewiesen, indem Sie es in Ihren Vorlagen verwenden 🙂

Ich hoffe, das hilft.