get_posts с ajax ничего не возвращает - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь получить сообщение, используя get_posts с slug, который успешно получен от ajax. Однако это ничего не возвращает. Пожалуйста, укажите на мою ошибку.

Мой Аякс:

var nextt = document.getElementById("nextt");
nextt.addEventListener("click",function(e){
    event.preventDefault();
    var nextpage = document.querySelector("a[rel=next]").getAttribute("href");
    xhr = new XMLHttpRequest();
    xhr.open('POST', ajaxurl, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
    xhr.onreadystatechange  = function(){
        var content = document.getElementById('main');
        if(xhr.readyState  == 4){
            if(xhr.status  == 200) {
                content.innerHTML = xhr.responseText;
            } else{
                content.innerHTML = 'Cannot connect to server. Check your internet connection '}
        }
    };
    xhr.send('action=load_selanjutnya&nonce=' + ajaxnonce + '&value=' + nextpage);
},false);

На моей функции. Php

function nextpage(){
   global $post;
    print_r($_REQUEST);
    $slug = $_REQUEST['value'];
    $args=array(
        'name' => $slug,
        'post_type' => 'post',
        'post_status' => 'publish',
        'numberposts' => 1
    );
    $my_posts = get_posts( $args );
    if( $my_posts ) {
        foreach ($my_posts as $post)
            setup_postdata( $post );
            get_template_part( 'single-ajax', get_post_format() );
        wp_reset_postdata();
    }
    else {echo $slug . ' - Fail. '; var_dump($my_posts);}
    exit();
}
add_action( 'wp_ajax_nextpage', 'nextpage' );
add_action( 'wp_ajax_nopriv_nextpage', 'nextpage' );

Я ожидаю, что он загрузит страницу содержимого вместо ничего / пусто в качестве возврата.

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Ну, эта проблема исправлена. Проблема в самом слаге, у него "https://domainname/path" должен быть только путь, основная проблема, которая меня так смущает.

$slug = parse_url($_REQUEST['value'], PHP_URL_PATH);
0 голосов
/ 08 июля 2019

Просто чтобы быть уверенным ... вы инициализировали Ajax для использования в вашей теме WordPress?

<script type="text/javascript">
    var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>

должно присутствовать в вашем разделе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...