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.
pobierz plik: iworks-ajax-get-option.php
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
Comentarios