get_term_children gibt WP_Error für benutzerdefinierte Taxonomie zurück

Woran ich gerade arbeite, ist ein Ajax-basiertes Drop-Down-Optionsformular, das basierend auf der gewählten Option Kind-Terme zurückgibt.

Wenn die Option ausgewählt ist, wird eine function mit onchange ausgetriggers, wobei das Skript die term_id und die Taxonomie der ausgewählten Option ergreift und beide an den Server sendet.

Das serverseitige Skript, das ich erstellt habe, akzeptiert $_POST . Ich habe überprüft, dass die Variablen ordnungsgemäß zugewiesen wurden, indem ich sie an den Client $_POST und die Konsolenprotokolle überprüfe.

 <?php //Include wordpress require_once( 'wp-config.php' ); require_once( 'wp-includes/wp-db.php' ); $wpdb = new wpdb( DB_USER , DB_PASSWORD , DB_NAME , DB_HOST ); if (isset($_POST)){ $taxID = $_POST[id]; $taxType = $_POST[tx]; } else { echo "Error: invalid data recieved. Please contact the site administrator."; die(); } $termchildren = get_term_children( $taxID, $taxType ); echo ''; die(); ?> 

Das Ziel dieses Skripts besteht darin, HTML zurückzugeben, das ich in ein anderes Element einfügen kann.
– Die ID des Elements, das Probleme verursacht, ist 4 , die ein Kind mit der ID 15
– Die Taxonomie des Elements ist classifieds_categories
– Die manuelle Übergabe dieser Werte funktioniert auch nicht.
– Wenn ich den li a href erhalte ich diesen Fehler:
Catchable fatal error: Object of class WP_Error could not be converted to string in ...

Hat jemand irgendwelche Vorschläge? Denn ehrlich gesagt bin ich gerade dabei, meinen Laptop zum nächsten Fenster zu casting.

Solutions Collecting From Web of "get_term_children gibt WP_Error für benutzerdefinierte Taxonomie zurück"

Da get_term_link() ein WP_Error Objekt WP_Error , wenn der Begriff nicht existiert, könnten Sie versuchen:

 $termchildren = get_term_children( $taxID, $taxType ); echo '
    '; foreach ( $termchildren as $child ) { $term = get_term_by( 'id', $child, $taxType ); $term_link = get_term_link( $term->name, $taxType ); if( ! is_wp_error( $term_link ) ) echo '
  • ' . $term->name . '
  • '; } echo '
';

Es sieht also so aus, als würden Sie versuchen, das WP_Error-Objekt wiederzugeben.

Sie könnten versuchen, es zu debuggen mit:

 if( is_wp_error( $term_link ) ) echo $term_link->get_error_message(); 

Obwohl du AJAX falsch machst , ist das nicht dein Problem. Das Problem ist diese Zeile:

 $wpdb = new wpdb( DB_USER , DB_PASSWORD , DB_NAME , DB_HOST ); 

Aber ich verstehe nicht, warum du beides brauchst:

 require_once( 'wp-includes/wp-db.php' ); $wpdb = new wpdb( DB_USER , DB_PASSWORD , DB_NAME , DB_HOST ); 

Versuchen Sie den Code ohne diese Zeilen und es funktioniert, zumindest wenn ich es versuche.

Aber bitte mach AJAX richtig.