@Aricus

Как предотвратить замену get_the_ID от get_posts?

get_posts() - это аналог query_posts(). Отличается тем, что get_posts() не вмешивается в глобальный запрос WP, а создает отдельный экземпляр класса WP_Query.

Вот только вмешательство почему-то есть.
var_dump(get_the_ID());
	
// Замена названия товаров на ссылки
$pc = get_posts( array( 'exclude' => get_the_ID(), 'post_type' => 'post' ) );
foreach( $pc as $post){
	$changeTitle = str_replace('-', '‑', $post->post_title);
	$textContent = str_replace($changeTitle, '<a href="'.$post->guid.'">'.$changeTitle.'</a>', $textContent);
	$fulltext = str_replace($changeTitle, '<a href="'.$post->guid.'">'.$changeTitle.'</a>', $fulltext);
}
	
var_dump(get_the_ID());

Первый var_dump выдаёт 160, другой - 164. Как предотвратить замену get_the_ID()? Понимаю, что можно просто записать её в переменную, но хочется более универсального решения.
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
@baton4eg
web developer
Инструкцию не дочитали:
https://wp-kama.ru/function/get_posts
foreach( $pc as $post){
setup_postdata($post); //УСТАНОВИМ ДАННЫЕ ПОСТА
  $changeTitle = str_replace('-', '‑', $post->post_title);
  $textContent = str_replace($changeTitle, '<a href="'.$post->guid.'">'.$changeTitle.'</a>', $textContent);
  $fulltext = str_replace($changeTitle, '<a href="'.$post->guid.'">'.$changeTitle.'</a>', $fulltext);
}
wp_reset_postdata(); //ВОССТАНОВИМ изначальные данные поста после цикла
var_dump(get_the_ID()); //теперь покажет исходное значение

хотя я лично просто использовал бы new WP_Query();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы