2

我有一个 php 文件(loopHandle.php),里面有一个 wordpress 循环,我想在我的网页上的一个 div 中加载它。

我使用带有 $date(“2012-6”)字符串变量的 on click 事件进行调用,这个变量对我的 wordpress 循环很重要,因为我将按日期对帖子进行排序。

我决定一步一步地进行,到目前为止,我的 AJAX 调用正在工作并使用变量 $date 对我的 div 进行响应。

这就是我看待事物的方式;在点击事件上,我使用此链接发送我想要使用的变量:

$link_url = esc_url(wp_nonce_url( admin_url('admin-ajax.php?&action=dynamic_date&my_date='.$date), "dynamic_date_nonce")); ?>

我将动作、随机数和自定义变量发送到 wordpress 的 ajax 处理器 (admin-ajax.php),然后在我的 functions.php 中触发一个函数。这是我实际处理我发送的变量的地方。

现在这是我面临的问题,我如何响应 ajax 调用,使用我发送的变量并用我的 wordpress 循环回复?

我考虑过的一些选项:

$wp_loop = if($loop->have_posts()) { 
while($loop->have_posts()) { 
the_post();
get_template_part( 'content', get_post_format() );
} 
} wp_reset_query();
$response = new WP_Ajax_Response();
$response->add(array(
'what' => 'fulldate',
'data' => $wp_loop)); 
$response->send(); 

那更像是用棍子戳它,看看会发生什么。

另一个理论是$date = $_GET['my_date];在我的中使用,我handleLoop.php是否能够从不是functions.php的地方检索我的变量?那我可以这样回应:

$loopHandle = include(handleLoop.php);
$response->add(array(
'what' => 'fulldate',
'data' => $wp_loop)); 
$response->send(); 

无论如何,我希望我正确地传达了我的问题,当然非常感谢您的帮助。

编辑:我使用以下方法捕获密钥对:

s.data = $.extend(s.data, { action: url.action, _ajax_nonce: url._wpnonce, my_date: url.my_date });

4

1 回答 1

0

两个问题:

1) 你如何发送你的数据:在 jQuery 请求中,确保在 data 参数中包含你的日期(你似乎已经通过使用 GET 语法在你自己的问题中解决了这个问题)。

2)你如何回应?WP_Ajax_Respond 类用于发送 XML,对您来说可能有点过于重量级,特别是因为您很可能返回 HTML。

相反,尝试创建一个 PHP 数组来存储循环的每次迭代的结果,然后对数组进行 json_encode 并返回 JSON?

http://codex.wordpress.org/AJAX_in_Plugins

于 2013-09-16T15:39:29.703 回答