Wp_query с массивом post__in не верный результат
-
Добрый день, я не разработчик, но уже несколько дней выкурил мануалы, пытаясь решить задачу. Есть важные записи в шапке, я хочу, чтобы для текущей страницы, пользователю не отображалась эта же страница. Я использую следующий код. По логике, всё должно работать. Но исключающая запись, всё равно попадает в результат.
Как мне кажется проблема в самом Wp_query, посмотрите, пожалуйста.<?php $object = get_queried_object(); $_object_id = $wpdb->get_col( "SELECT post_id FROM <code>wp_postmeta</code> WHERE meta_key = '_my_important' AND meta_value = '1' AND post_id != ". $object->ID ." ORDER BY <code>wp_postmeta</code>.<code>post_id</code> DESC LIMIT 0,14" ); $_object_id = array_map('intval', $_object_id); $test = array(285856,285856,285806,285806,285783,285790,285790,285783,285777,285777,285748,285748,285743); $important = new WP_Query( array( 'post__in' => $_object_id, // 'post__in' => $test, ) ); ?>Допустим $object->ID равен 285811 делаю
результат: var_dump($_object_id);
array (size=14) 0 => int 285864 1 => int 285856 2 => int 285834 3 => int 285809 4 => int 285806 5 => int 285792 6 => int 285791 7 => int 285790 8 => int 285783 9 => int 285780 10 => int 285777 11 => int 285749 12 => int 285748 13 => int 285746Вроде бы всё хорошо, то что нужно, смотрим результат: var_dump($important);
object(WP_Query)[12029] public 'query' => array (size=1) 'post__in' => array (size=14) 0 => int 285864 1 => int 285856 2 => int 285834 3 => int 285809 4 => int 285806 5 => int 285792 6 => int 285791 7 => int 285790 8 => int 285783 9 => int 285780 10 => int 285777 11 => int 285749 12 => int 285748 13 => int 285746 public 'query_vars' => array (size=67) 'post__in' => array (size=14) 0 => int 285856 1 => int 285856 2 => int 285811 //!!!!!!!!!! Откуда???? Если я передаю заранее написанный массив ID в $test, то проблем нет. 3 => int 285806 4 => int 285806 5 => int 285783 6 => int 285790 7 => int 285790 8 => int 285783 9 => int 285777 10 => int 285777 11 => int 285748 12 => int 285748 13 => int 285743 'error' => string '' (length=0)Откуда взялолось???? «2 => int 285811»
public 'request' => string ' SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND wp_posts.ID IN (285856,285856,285811,285806,285806,285783,285790,285790,285783,285777,285777,285748,285748,285743) AND ( wp_term_relationships.term_taxonomy_id IN (9) ) AND ((wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'private'))) GROUP BY w….
Wordpress 6.1, сайт двуязычный, polylang и ACF
Я уже даже попробовал заполнить новый массив, через цикл$arr = array(); for ($i = 0; $i < 14; $i++) { $arr[] = $_object_id[$i]; }, всё равно тот же результат
- Тема изменена 3 года, 3 месяца назад пользователем .
- Тема изменена 3 года, 3 месяца назад пользователем .
- Тема изменена 3 года, 3 месяца назад пользователем .
- Тема изменена 3 года, 3 месяца назад пользователем .
Тема «Wp_query с массивом post__in не верный результат» закрыта для новых ответов.