WordPress: Cykliczne pobieranie opcji
- Piotr Bartczak
- 16 sie 2013
- 1 minut(y) czytania
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
Comments