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:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu

Published by Marcin Pietrzak

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis nec ante nec lectus laoreet feugiat. Donec aliquet justo in tellus gravida, id elementum magna convallis. Curabitur faucibus mauris sed risus egestas lobortis. Nunc vestibulum elit ac ipsum ultricies, non ultrices lorem ultrices. Nam at dolor id elit lobortis ullamcorper. Fusce commodo turpis nisi, efficitur efficitur libero dictum eget. Morbi viverra dignissim lacus. Vestibulum mi justo, dictum ut iaculis eget, scelerisque et nibh.

Więcej w AJAX
ie6 + ajax – koszmar z ulicy www

Wyobraźcie sobie system CMS dedykowany do obsługi naprawdę dużego ruchu, wielu redaktorów, wielopoziomowej możliwości akceptacji treści. Dobra może wystarczy. Jest...

Zamknij