Czasem, wyświetlając serwis, należy aktualizować coś na stronie, ale bez przeładowywania. Standardowym przykładem może być liczba osób, aktualnie przeglądających witrynę.
WordPress posiada wbudowaną obsługę zapytań asynchronicznych (AJAX), którą można wykorzystać w tym celu. Całość wykorzystuje dwie akcje:
- wp_ajax_nopriv_{nazawa} dla użytkowników niezalogowanych
- wp_ajax_{nazawa} dla tych zalogowanych.
Częstym błędem jest umieszczenie tylko jednej z tych akcji.
Sam kod jest ultra prosty i jeżeli chcesz wysłać coś innego, to po prostu zmień kod w funkcji callback, która to odpowiada za zwracane dane.
Co natomiast zrobisz z pobraną informacją, zależy już tylko od ciebie i tego co umieścisz w kodzie JavaScript, który jest umieszczany na stronie za pomocą akcji wp_head.
<?php class Iworks_Ajax_Get_Option { private $action_name; public function __construct() { $this->action_name = strtolower( __CLASS__ ); add_action( 'wp_ajax_'.$this->action_name, array( &$this, 'callback' ) ); add_action( 'wp_ajax_nopriv_'.$this->action_name, array( &$this, 'callback' ) ); add_action( 'wp_head', array( &$this, 'wp_head' ) ); } public function callback() { echo get_option( 'blogname' ); die(); } public function wp_head() { ?> <script> jQuery(document).ready(function($) { var data = { action: '<?php echo $this->action_name; ?>', }; jQuery.post( '<?php echo admin_url('admin-ajax.php'); ?>', data, function(response) { alert('Got this from the server: ' + response); }); }); </script> <?php } } new Iworks_Ajax_Get_Option(); |
W załączniku znajduje się minimalnie rozbudowana wersja kodu, która pozwala na zdefiniowanie listy opcji możliwych do zaciągnięcia, użyta też została akcja wp_enqueue_scripts w celu dodania jQuery, które jest wymaga do zadziałania.
[zip href="http://iworks.pl/wp-content/uploads/2013/08/iworks-ajax-get-option.php-.zip"]iworks-ajax-get-option.php[/zip]Jak użyć podany kod?
Masz 3 rozwiązania:
- wrzuć załączony plik do folderu
wp-content/plugins
, a potem włącz wtyczkę - wrzuć załączony plik do folderu
wp-content/mu-plugins
- dołącz kod do pliku
functions.php
aktualnie używanego motywu