2013-09-26 4 views
0

Я все еще работаю над тем, чтобы забрать PHP, и я потратил много времени на этот код, и почти до того, где мне нужно быть. В принципе, код предназначен для захвата записей WP за последние 10 дней, выберите два случайно, затем отобразите первое изображение в сообщении и ссылку на сообщение. Также предполагается установить первое изображение с классом. Второй, а второе с классом. Третье. К сожалению, он работает в некоторой степени, но продолжает производить дубликаты копий одного и того же изображения. Кажется, что массив работает, за исключением того, что мне просто нужно меньше копии каждого изображения. Вот код, минус фильтр даты и catch_that_image функции(), оба из которых работает отлично:Foreach & While Producing Duplicate Output

add_filter('posts_where', 'filter_where'); 

$banner_class = array('second','third'); 
$the_query = new WP_Query(array('orderby' => 'rand', 'posts_per_page' => '2')); 

while ($the_query->have_posts()) : $the_query->the_post(); 
if (!empty($the_query)) { 
foreach ($banner_class as $value){ ?> 
<div class="banner small image <?php echo $value; ?>" > 
<?php echo '<a href="'. get_permalink().'">'; ?> 
<img src="<?php echo catch_that_image(); ?>" width="300px"> 
<?php echo '</a></div>'; 
} 
} 

endwhile; 


remove_filter('posts_where', 'filter_where'); 

Я уверен, что это простое решение, и, несомненно, имею что-то делать с некоторым временем и Еогеаспом используется вместе. Вот вывод: http://www.mymusicisbetterthanyours.com/slider-test/

Любая помощь очень ценится!

ответ

1
$n = 0; 
while ($the_query->have_posts()) : $the_query->the_post(); 
?> 
    <div class="banner small image <?php echo $banner_class[$n]; ?>"> 
     <a href="<?php the_permalink(); ?>"><img src="<?php echo catch_that_image(); ?>" width="300px"></a> 
    </div> 
<?php $n ++; endwhile; ?> 

избавиться от этой петли foreach в реальном цикле. Вы пишете html дважды на каждой итерации таким образом. Добавьте базовый счетчик для класса баннера. В этом случае $ n, а затем увеличивайте это значение на каждой итерации пост-цикла.

Кстати, я упростил ваш выход. Вам не нужно проверять, является ли запрос пустым. Это то, что в то время как условие делает. И взлом и выход из php для записи разделов html не имеет смысла. Я также ничего не вижу в вашем запросе, который гарантирует, что случайные сообщения ограничены последними 10 днями.

+0

Ничего себе. Удивительно. Очень ценю быстрый ответ! Фильтр для сообщений был в другом месте (functions.php), но это работает нормально, поэтому я решил, что мне не нужно его включать. У меня все еще есть чему поучиться, но это очень помогает! – brianjohnhanna