用ajax加载wordpress模板

时间:2015-12-19 13:14:26

标签: php jquery ajax wordpress

我想用ajax加载我的模板,但我正在努力(根本没有工作),主要是用PHP猜测。我试图得到任何模板是正确的,使用ID获取模板slug,但似乎没有工作。

到目前为止,这是我的代码:

function theme_js() {

    wp_enqueue_script( 'ajaxstuff', get_template_directory_uri() . '/js/ajax.js', array('jquery'), '', true );
    wp_localize_script( 'ajaxstuff', 'ajaxify', array(
        'ajaxurl' => admin_url( 'admin-ajax.php' )
    ));

}

add_action( 'wp_enqueue_scripts', 'theme_js' );

add_action( 'wp_ajax_nopriv_ajax_submit', 'my_ajax_submit' );
add_action( 'wp_ajax_ajax_submit', 'my_ajax_submit' );

function my_ajax_submit() {

    $pageUrl = $_REQUEST['URL'];
    $postid = url_to_postid( $pageUrl );         
    $post = get_post($postid);
    $pageSlug = get_page_template_slug($postid);

    if ($post) {
    setup_postdata($post);

        get_template_part( $pageSlug );

    }

    exit();
}

我的JS:

    (function($){

   $('body').on('click', 'a', function(e) {

        e.preventDefault();

        var URL = $(this).attr('href');

        animationFunction();

        var ajaxPromise = $.ajax({
            url: ajaxify.ajaxurl,
            type: "post",
            data: {
                action: 'my_ajax_submit',
                url: URL
            },
            dataType: "html"
        });

        var animationPromise = animationFunction();
        $.when(ajaxPromise, animationPromise).done(function(data) {
            $('#page-wrap').html(data[0]);
            TweenMax.to('.page', 0.35, { alpha: 1 });
        });

    });

    function animationFunction() {

      var deferred = $.Deferred();

      TweenMax.to('.page', 0.35, { alpha: 0, onComplete: deferred.resolve  });

      return deferred.promise();

    }

})(jQuery);

1 个答案:

答案 0 :(得分:0)

$pageUrl = $_REQUEST['URL'];

$_REQUEST包含关联数组,数组索引区分大小写,因此:

$pageUrl = $_REQUEST['url'];