Ich habe kürzlich mit der Implementierung von AJAX in WordPress gespielt. Ich weiß, dass es viele Plugins gibt, aber ich wollte es selbst machen.
In Artikeln zu AJAXified WordPress empfehlen die meisten Leute die Verwendung admin-ajax.php um AJAX-Anfragen zu verarbeiten. Meine erste Idee war, einfach benutzerdefinierte get_header() und get_footer() zu erstellen.
1. Weg
// Boolean function ?ajax=true
function is_ajax () {
if($_REQUEST['ajax']) {
return true;
} else {
return false;
}
}
function ajax_get_header () {
if(is_ajax()) {
get_header('ajax');
/* Insert header-ajax.php which
includes only google analytics tracking code and some minor stuff */
return true;
} else {
get_header();
// Standard header
return true;
}
}
/* Function ajax_get_footer() pretty much the same */
Dann würden Seitenvorlagen aussehen
<?php ajax_get_header(); ?>
<!-- Content -->
<?php ajax_get_footer(); ?>
Und natürlich Ajax-Aufrufe auf die übliche Weise zu tätigen. Diese Methode sieht für mich einfach und sauber aus. Andererseits empfehlen viele Leute, die integrierte Funktion zu verwenden, indem sie einen Hook erstellen, um AJAX-Aufrufe abzufangen.
2. Weg
function process_ajax(){
/* Show the page or whatever */
}
add_action('wp_ajax_nopriv_ajax', 'process_ajax');
add_action('wp_ajax_ajax', 'process_ajax');
Und AJAX-Aufrufe auf admin-ajax.php verweisen
Welches verwenden?
Ich habe beide Methoden ausprobiert und festgestellt, dass die erste Methode bemerkenswert schneller lädt als die letztere. Unter gleichen Bedingungen dauerte der 1. Weg (ajax_get_header) ungefähr 400 ms, um eine Seite zu laden (fast kein Inhalt) und der 2. Weg (admin-ajax.php) ungefähr 800 ms. Ich weiß nicht warum, beide Wege laden den WP-Kern und machen fast dasselbe.
Also, ich frage Sie, gibt es einen ernsthaften Grund, AJAX-Aufrufe über admin-ajax.php zu tätigen? Ist es notwendig? Und warum dauert es länger, einen Anruf auf dem empfohlenen Weg zu bearbeiten?
Ich denke, Sie würden einige Antworten erhalten WordPress-StackExchange…
– Brasilo
9. Dezember 2012 um 3:01 Uhr