Получение WordPress, чтобы хорошо играть с AJAX - PullRequest
1 голос
/ 21 января 2010

Как использовать функции WP из вызовов AJAX. Я посмотрел документацию по созданию плагинов, использующих ajax, но я не мог понять, как применить это к обычным страницам и постам.

Есть ли простой способ загрузить все без использования их API? У меня есть способ, которым я хотел бы заниматься ajax и предпочел бы не использовать их вещи.

Это версия моего кода:

Javascript (jQuery):

$('.action.next_posts').click(function() {
        var last_date = $(this).attr('title');
        //alert();
        $.ajax({
            url: WP_DIR+'functions.php?action=get_next_posts',
            type: 'POST',
            data: {date : last_date},

            success: function(response) {
                alert(response);
            },

            error: function(error) {
                alert("error");
            }
        });

    });

Functions.php (PHP):

// AJAX controller

if(isset($_GET['action'])) {
    require_once('../../../wp-config.php');

    require_once('../../../wp-includes/classes.php');
    require_once('../../../wp-includes/functions.php');

    wp();
    echo 'ok';
    echo bloginfo('name'); // NOT WORKING. TRIED adding actions..
    return;
}

1 Ответ

2 голосов
/ 21 января 2010

Следующее решение должно работать. Вы собираетесь продолжить и опубликовать непосредственно в установке WordPress и перехватить запрос, прежде чем WordPress выполнит все запросы, которые он обычно делает. У этого метода есть некоторые оговорки, одна из которых заключается в том, что некоторые методы кэширования будут мешать ему, но он должен работать достаточно хорошо для ваших целей.

Кроме того, вы сказали, что не хотите использовать указанный API WordPress, так что это должно быть прямо в вашем переулке.

JavaScript:

jQuery(document).ready(function($) {
    $('.action.next_posts').click(function(event) {
        event.preventDefault();
        var last_date = $(this).attr('title');
        $.ajax({
            url: '/',
            type: 'post',
            data: {date : last_date, action: 'get_next_posts'},

            success: function(response) {
                alert(response);
            },

            error: function(error) {
                alert("error");
            }
        });

    });
});

functions.php

add_action('parse_request','my_request_parser');
function my_request_parser($wp) {
    if( 'get_next_posts' == $_POST['action'] ) {
        echo 'ok';
        bloginfo('name');
        exit();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...