setup_postdata в php-файле «loop-handling», называемом $ .ajax

Я называю php-файл типа «loop handler», который открывает цикл с WP_Query.

Внутри цикла foreach я хочу использовать функцию show_postdata . Я знаю глобальный $ post аспект этой функции. Однако я попытался разместить global $post всюду в этом файле php.

Я получаю ошибку ошибки 500 сервера с подробным сообщением ошибки noch в части 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_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(); } ...... 

Solutions Collecting From Web of "setup_postdata в php-файле «loop-handling», называемом $ .ajax"

Решено путем получения автора, post_date, permalink & excerpt вручную без setup_postdata:

  $excerpt = myCustomExcerptFunction($post, 35); $post->post_excerpt = $excerpt; // Permalinks $post->post_permalink = get_post_permalink($post->ID); // Author $authorObjekt = get_userdata($post->post_author); $post->post_author_displayname = $authorObjekt->data->display_name; $post->post_author_nicename = $authorObjekt->data->user_nicename; // Date $post->post_date_wpformat = date_i18n( get_option( 'date_format' ),