Странно, но когда вы хотите использовать теги шаблонов вместе с setup_postdata()
, вам нужно использовать глобальную переменную $post
. setup_postdata()
на самом деле не устанавливает эту переменную, он устанавливает некоторые связанные глобальные переменные и запускает действие the_post
. Вы можете увидеть, что происходит здесь
Чтобы делать то, что вы хотите делать без передачи идентификаторов и т. Д. Для каждого вызова функции шаблона, вам необходимо настроить цикл таким образом.
global $post;
foreach ( $products as $post ) {
setup_postdata( $post );
// Your code here.
}
wp_reset_postdata();// Reset the global $post variable and re-setup postdata.