我调用了一个“循环处理程序”类型的php文件,它通过WP\\U查询打开一个循环。
内部foreach
循环我想使用show_postdata
作用我知道这个函数的全局$post方面。我试着把global $post
但是,php文件中的任何地方都没有成功。
我得到一个错误500服务器错误,在catch部分没有详细的错误消息。
当我使用该类在模板中获取服务器上的数据时,它会起作用。
这是我的AJAX调用:
$.ajax({
type : "GET",
data : {numPosts : numPosts, postTypes : postTypes, template : template, postID : null, filterArgs : filterArgs, fields: fields, inclMeta : inclMeta, imgFields : imgFields },
dataType : "html",
url : bfApp.setWPUrl + "/bfLoopHandler.php",
beforeSend : function(){
},
success : function(data){
if (typeof(callbackSuccess) == "function") {
callbackSuccess(data);
}
},
error : function(jqXHR, textStatus, errorThrown) {
if (typeof(callbackError) == "function") {
callbackError(jqXHR, textStatus, errorThrown);
}
}
});
这是php文件的摘录,直到调用show\\u postdata为止:
class bfLoop {
public function getData($postIDs, $postTypes, $numPosts, $filterArgs, $template, $fields, $inclMeta, $imgFields, $inclCats) {
global $post;
define(\'WP_USE_THEMES\', false);
$parse_uri = explode( \'wp-content\', $_SERVER[\'SCRIPT_FILENAME\'] );
require_once( str_replace(\'index.php\', \'\', $parse_uri[0]) . \'wp-load.php\' );
// Argumente setzen
if ($postIDs == null || $postIDs == 0) {
$args = array( \'post_type\' => $postTypes,
\'post_status\' => array(\'publish\'),
\'posts_per_page\' => $numPosts,
\'meta_query\' => $filterArgs,
\'fields\' => $idsOnly );
} else {
if (is_array($postIDs)) {
$args = array(
\'post__in\' => $postIDs,
\'post_type\' => \'any\');
} else {
$args = array(
\'p\' => $postIDs,
\'post_type\' => \'any\');
}
}
$loop = new WP_Query( $args );
$retArray = array();
$posts = $loop->get_posts();
foreach ( $posts as $post ) {
try {
setup_postdata( $post );
} catch(Exception $e) {
//return "AFTER";
return "W:" . $e->getMessage();
} ......