0

我的functions.php. 这是我处理 AJAX 请求的函数。

function dynamic_date() {
check_ajax_referer('dynamic_date_nonce');
$fdate = $_GET['my_date'];
$date[] = explode("-",$fdate);
$year = $date[0];
$month = $date[1];
$args = array('year' => $year,'monthnum' => $month);
$loop = new WP_Query($args);
if($loop->have_posts()) { 
while($loop->have_posts()) { 
the_post();
echo get_template_part( 'content', get_post_format() );
} 
} wp_reset_query();
die('');
}

这是 AJAX 调用:

function _do_ajax(obj) {
    var element = $(obj); //our link object
    var url = wpAjax.unserialize(element.attr('href'));
    var s = {};
    s.response = 'ajax-response';
    s.type = "GET";
    s.url = sortbydate.ajax_url;
    s.dataType = "HTML";
    s.data = $.extend(s.data, { action: url.action, _ajax_nonce: url._wpnonce, my_date: url.my_date });
    s.global = false;
    s.timeout = 30000;
    s.success = function(data) {
        $("body.blog #content").fadeIn(500).append(data);
        alert(data);            
    } //End success
    s.error = function(r) {
        alert("Epic Fail!");    
    }
    $.ajax(s);
} //end _do_ajax
$.get_my_comments.init();
});

现在,如果我删除 wordpress 循环并只回显 $year 和 $month 它会附加到容器并正常工作。当我添加循环时,虽然我得到一个空响应并且没有显示任何内容。

我是否正确处理了响应?

4

1 回答 1

1

在您的代码中,您有

get_template_part( 'content', get_post_format() );

所以,这将寻找content-format.php文件,在这种情况下formats

aside, chat, gallery, link, image, quote, status, video, audio

因此,根据format帖子的不同,WordPress将在模板的根文件夹中查找文件。因此,请确保您有相应的文件,例如 、content-aside.phpcontent-chat.php(如果您有这些类型的帖子)。对于,默认/正常帖子,get_post_format()返回false,所以试试这个

$format = get_post_format();
if ( false === $format ) {
    $format = 'standard';
}
get_template_part( 'content', $format );

最后,确保你有根据你的查询的帖子,只是var_dump($loop)看看你是否真的得到任何结果或者它是空的。

如果您没有任何post-format特定的帖子,则可以使用,

get_template_part( 'content', 'loop' );

并将您的文件名更改为content-loop.php,因此在您调用时WordPress会查找/包含content-loop.php或文件。content.phpget_template_part( 'content', 'loop' );

于 2013-09-16T21:01:29.013 回答