Intereting Posts
Как создать новый тип контента и сбросить правила перезаписи без посещения страницы постоянных ссылок? Плагин или пользовательский тип страницы Функциональность управления файлами на панели управления Отключить inline_edit () на edit.php WP_User_Query не будет комбинировать методы мета + нормального поиска Мой блог WordPress не показывает Работа с файловой системой Frontend работает, но я получаю ошибку «Constant ABSPATH уже определен» WP Query получает только 1 сообщение (липкий, не липкий и т. Д.) Загрузка индексной страницы WordPress вместо archive.php Добавить кредит для get_custom_header в alt странное поведение template_redirect в IE8 Как создать зависимый выпадающий список и параметры в раскрывающемся списке должны быть доступны с панели администратора Скрипт Enqueue только при использовании бокового виджета Конкретная SEO-мета на странице с фильтром с WooCommerce wordPress не конвертирует эможи в изображения

WP_Post не из правильного массива

Здесь немного сложная проблема, но я подумал, что посмотрю, смогу ли я помочь.

Моя логика такова:

Пользовательский почтовый запрос WordPress> для каждого из результатов, коэффициент на расстоянии (рассчитывается отдельно), на основе условного нажатия результата на массив ($ results)> Сортировать результаты> для каждого из результатов, отображать соответствующие данные WP.

У меня все нормально работает до последней части.

// initial wordpress query $args = array( 'post_type' => 'team-members', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => 'specialties', 'value' => $_GET['specialization'], 'compare' => 'LIKE' ) ) ); $loop = new WP_Query( $args ); $posts = $loop->get_posts(); // create array for results $results = array(); foreach ($posts as $key => $value) { $loop->the_post(); $result_lat = get_post_meta( $value->ID, 'latitude', true ); $result_long = get_post_meta( $value->ID, 'longitude', true ); $distance = round(calc_distance($input_lat, $input_lng, $result_lat, $result_long, "M")); // add item to results if within distance if ($distance < $_GET['within']) { $results[$key]['values'] = $value; $results[$key]['distance'] = $distance; // add distance to array } } // sort results by distance usort($results, function($a, $b) { return $a["distance"] - $b["distance"]; }); foreach ($results as $key => $value) { echo get_the_ID(); } 

В случае get_the_ID() он не получает правильный идентификатор сообщения. Вместо этого он возвращается к исходному запросу.

Если я делаю var_dump($results) до последнего цикла, я получаю массив, который структурирован так:

 array(3) { [0]=> array(2) { ["values"]=> object(WP_Post)#659 (24) { ["ID"]=> int(300) ["post_author"]=> string(1) "1" 

Мне нужно установить WP_Post для правильного массива для каждого из этих элементов, но я не могу понять, как это сделать.

Solutions Collecting From Web of "WP_Post не из правильного массива"

get_the_ID дает вам идентификатор текущего сообщения, но ни при каких условиях во время этого цикла вы не меняете то, что такое текущее сообщение. Это всегда последнее сообщение, обработанное в предыдущем цикле, потому что это последний раз, когда вы вызвали the_post() . Вот почему вы всегда получаете одинаковый идентификатор.

Вместо этого сохраните идентификатор:

 $results[$key]['ID'] = $value->ID; 

Затем повторите это:

 foreach ($results as $key => $value) { echo $value['ID']; } 

Еще одна важная проблема заключается в том, что вы используете $results[$key] но никогда не назначаете ему начальное значение и считаете, что это массив, вы должны инициализировать его с помощью $results[$key] = arrayy(); первый