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 ''; foreach ( $termchildren as $child ) { $term = get_term_by( 'id', $child, $taxType ); echo '- name, $taxType ) . '">' . $term->name . '
'; } 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.
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.