PHP-Skript von functionen php wird über admin-ajax zu div geladen … und das Ergebnis ist 0, nicht der gewünschte Inhalt

Ich möchte das Akkordeonmenü http://wordpress.org/plugins/jquery-vertical-accordion-menu/ über eine function verwenden, die verschiedene Menüs basierend auf der Seitenvorlage lädt.

Darüber hinaus möchte ich dieses Element verstärken. Im Folgenden finden Sie alle Skripte von functions.php:

function get_left_menu() { if (is_page_template('page-akademia-biznesu.php')) { echo do_shortcode('[dcwp-jquery-accordion menu="Business menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]'); } elseif (is_page_template('page-forum-wiedzy-oze.php')) { echo do_shortcode('[dcwp-jquery-accordion menu="OZE menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]'); } elseif (is_page_template('page-o-nas.php')) { echo do_shortcode('[dcwp-jquery-accordion menu="About menu" auto_close="true" event="click" save="false" disable="false" count="false" expand="false" disable_class="disabled"]'); } elseif (is_page_template('page-program-ambasadorski.php')) { echo do_shortcode('[dcwp-jquery-accordion menu="Ambassador menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]'); } elseif (is_page_template('page-program-edukacyjny.php')) { echo do_shortcode('[dcwp-jquery-accordion menu="Aside menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]'); } die(); } add_action("wp_ajax_nopriv_get_left_menu", "get_left_menu"); add_action("wp_ajax_get_left_menu", "get_left_menu"); function reload_menu_via_ajax() { wp_enqueue_script( 'function', get_template_directory_uri().'/library/js/menuReload.js', 'jquery', true); wp_localize_script( 'function', 'left_menu_reload', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); } add_action('template_redirect', 'reload_menu_via_ajax'); 

Und hier haben wir jquery ajax Skript (menuReload.js):

 jQuery(document).ready(function($) { $(function() { $('nav ul li').click(function() { $('#left-menu').empty(); setTimeout(function() { $.ajax({ method : "POST", url : left_menu_reload.ajaxurl, data : ( { action : 'get_left_menu()' }), success : function(data) { $("#left-menu").html(data); } }); }, 2000); }); }); }); 

Ich bin nicht sehr geschickt, wenn es um Ajax-Anrufe geht, also bitte vergib mir, wenn das etwas Offensichtliches ist. Aber ich bin in letzter Zeit wirklich verzweifelt mit diesem und bitte – Hilfe.

Solutions Collecting From Web of "PHP-Skript von functionen php wird über admin-ajax zu div geladen … und das Ergebnis ist 0, nicht der gewünschte Inhalt"

Dieser is_page_template Aufruf ist alles falsch. Die AJAX-Anfrage ist eine unabhängige Anfrage an den Server vom Client-Browser. Soweit die AJAX-Anfrage betroffen ist, ist die Seite, auf der Sie sich befinden, admin-ajax.php . Sie müssen einen Parameter mit der AJAX-Anforderung übergeben, mit der Sie ermitteln können, welcher Shortcode ausgeführt werden soll. Beispielsweise:

 data : ( { action : 'get_left_menu()', runsc : 'Business menu' }), 

Außerdem ist Ihre AJAX-Aktion get_left_menu() . Es sollte get_left_menu , um den wp_ajax_* -Aktionen zu entsprechen.