Simulieren Sie eine bestimmte Seite beim Erstellen von AJAX-Anrufen

Ich bin daran interessiert, Teile der Oberfläche unseres Themas über AJAX zu laden und schrieb eine function, um generische functionen zu behandeln. (Code unten.)

Es funktioniert gut, aber wp_nav_menu (), wenn diese function ausgeführt wird, markiert nicht zuverlässig Links mit geeigneten classn wie “current-menu-item”. Es funktioniert vielleicht die Hälfte der Zeit.

Weißt du, warum das wäre? Müssen irgendwelche functionen / globale Variablen behandelt werden, auf die sich query_posts () nicht kümmert?

add_action( 'wp_ajax_nopriv_ananda_ajax', 'ananda_ajax_output' ); add_action( 'wp_ajax_ananda_ajax', 'ananda_ajax_output' ); function ananda_ajax_output() { global $post; $function = $_POST['function']; $parameters = $_POST['parameters']; $post_id = $_POST['post_id']; if ( $post_id && ananda_ajax_is_approved_function( $function ) ) { // Query query_posts( array( 'p' => $post_id, 'post_type' => 'any' ) ); // Output the HTML ob_start(); if ( have_posts() ) { the_post(); if ( $parameters ) { call_user_func_array( $function, $parameters ); } else { call_user_func( $function ); } } else { // No posts } // Restore original post data. Probably not needed, but standard best practice. wp_reset_postdata(); // Send the output $output = ob_get_clean(); echo $output; } wp_die(); // Standard AJAX callback procedure } 

Solutions Collecting From Web of "Simulieren Sie eine bestimmte Seite beim Erstellen von AJAX-Anrufen"