PHP foreach, связывающий WordPress

Что является лучшим способом для меня перебрать этот массив идентификаторов постов WordPress и создать связанное изображение.

В настоящее время у меня есть:

<?php
$posts = array(1309,880,877,890,1741,1739,2017);

print "<div class='row'>";
foreach($posts as $post){
$queried_post = get_post($post);
echo "<a href='get_permalink( $post )'>";
print "<div class='col-xs-2'>";
echo get_the_post_thumbnail($queried_post->ID, 'thumbnail');
print "</div>";
print "</a>";
}
print "</div>";
?>

Я пришел из рубина и уверен, что использование print не будет самым эффективным способом открыть и закрыть html в вызове php.

На данный момент это не работает, так как он не передает идентификатор сообщения правильно в это дает мне это /get_permalink(%20880%20) в URL.

Заранее благодарю за любую помощь.

0

Решение

Вы можете использовать что-то вроде этого:

<?php
$posts = array(1309,880,877,890,1741,1739,2017);
?>
<div class='row'>
<?php foreach($posts as $post): ?>
<?php $queried_post = get_post($post); ?>
<a href="<?php echo get_permalink( $post ) ?>">
<div class='col-xs-2'>
<?php echo get_the_post_thumbnail($queried_post->ID, 'thumbnail'); ?>
</div>
</a>
<?php endforeach; ?>
</div>

Этот синтаксис использует синтаксический сахар с которым вы часто будете сталкиваться, если вы работаете с WordPress.

Если вы еще этого не сделали, было бы неплохо проверить Ссылка на код WordPress, они предоставляют примеры всех своих функций и т. д., и поскольку программное обеспечение широко используется, они склонны придерживаться лучших практик (в большинстве случаев!), поэтому оно может быть весьма полезным.

1

Другие решения

Вы должны использовать класс WP_Query.

# The Query
$the_query = new WP_Query( $args );

# Open div.row
echo '<div class="row">';

# The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {

$the_query->the_post(); ?>

<a href="<?php the_permalink(); ?>">
<div class="col-xs-2"><?php the_post_thumbnail( 'medium' ); ?></div>
</a>

<?php }
} else {
# no posts found
}

# Close div.row
echo '<div>';

# Restore original Post Data
wp_reset_postdata();
0

По вопросам рекламы [email protected]