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:

  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