Загрузка сообщений Wordpress в несколько DIV (столбцы) - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь загрузить все записи Wordpress в три разных Div'а как равные,

вот так

<div class="row">
    <div class="col-4">
    POSTS HERE 1/3
    </div>
    <div class="col-4">
    POSTS HERE 1/3
    </div>
    <div class="col-4">
    POSTS HERE 1/3
    </div>
</div>

Я уже сделал что-то похожее на других страницах, но разницая только загружаю туда 6 постов, так что проще, но теперь я хочу перечислить все посты на странице в 3 столбца, вот код, который я использовал для 6 постов:

<?php 
$wpb_all_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>6)); ?>
<?php if ( $wpb_all_query->have_posts() ) : ?>
<?php query_posts('showposts=2'); ?>
<div class="col-sm-4">
    <div class="article_list">
    <?php $posts = get_posts('numberposts=2&offset=0'); foreach ($posts as $post) : start_wp(); ?>
    <?php static $count1 = 0; if ($count1 == "2") { break; } else { ?>
        <article class="article_box">
            <a href="<?php the_permalink(); ?>"><img src="<?php the_post_thumbnail_url(); ?>" alt=""></a>
            <h3 class="journal_title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        </article>
    <?php $count1++; } ?>
    <?php endforeach; ?>
    </div>
</div>

<?php query_posts('showposts=2'); ?>
<div class="col-sm-4">
    <div class="article_list">
    <?php $posts = get_posts('numberposts=2&offset=2'); foreach ($posts as $post) : start_wp(); ?>
    <?php static $count2 = 0; if ($count2 == "2") { break; } else { ?>
        <article class="article_box">
            <a href="<?php the_permalink(); ?>"><img src="<?php the_post_thumbnail_url(); ?>" alt=""></a>
            <h3 class="journal_title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        </article>
    <?php $count2++; } ?>
    <?php endforeach; ?>
    </div>
</div>

<?php query_posts('showposts=2'); ?>
<div class="col-sm-4">
    <div class="article_list">
    <?php $posts = get_posts('numberposts=2&offset=4'); foreach ($posts as $post) : start_wp(); ?>
    <?php static $count3 = 0; if ($count3 == "2") { break; } else { ?>
        <article class="article_box">
            <a href="<?php the_permalink(); ?>"><img src="<?php the_post_thumbnail_url(); ?>" alt=""></a>
            <h3 class="journal_title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        </article>
    <?php $count3++; } ?>
    <?php endforeach; ?>
    </div>
</div>
<?php wp_reset_postdata(); ?>
<?php endif; ?>

Ответы [ 3 ]

1 голос
/ 09 июня 2019

Попробуйте приведенный ниже код. Вы получите список сообщений в формате ниже. enter image description here

<?php
$loop_counter = $innerBreak = 1;
$wpb_all_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>6));
if($wpb_all_query->have_posts()):
while($wpb_all_query->have_posts()) :
$wpb_all_query->the_post();
if($innerBreak == 1){
?>
<!-- when complete listing of 3 post open the new div -->
<div class="col-sm-4">
<?php
}
?>
<div class="article_list">
    <article class="article_box">
        <a href="<?php the_permalink(); ?>"><img src="<?php the_post_thumbnail_url(); ?>" alt=""></a>
        <h3 class="journal_title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    </article>
</div>
<?php 
//when complete listing of 3 post closed previously div.
if($loop_counter%3==0){ echo '</div>'; $innerBreak = 1;}else{$innerBreak = 0;}
$loop_counter++; endwhile; 
else: 
echo "<div>No Results Found</div>";
endif;  
?>
1 голос
/ 09 июня 2019

Благодаря Шивендра Сингх

после некоторых небольших изменений, вот код для равномерного разделения всех сообщений на три столбца

<?php
$loop_counter = $innerBreak = 1;
$wpb_all_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>-1));
if($wpb_all_query->have_posts()):
while($wpb_all_query->have_posts()) :
$wpb_all_query->the_post();
if($innerBreak == 1){
?>
<?php $posts_count = round((($wpb_all_query->post_count) / 3)+0.5); ?>
<!-- when complete listing of 3 post open the new div -->
<div class="col-sm-4">
    <div class="article_list" data-parallax='{"y" : -150, "distance": 2000, "smoothness": 10}'>
<?php
}
?>
    <article class="article_box">
        <a href="<?php the_permalink(); ?>"><img src="<?php the_post_thumbnail_url(); ?>" alt=""></a>
        <h3 class="journal_title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    </article>
<?php 
//when complete listing of 3 post closed previously div.
if($loop_counter%$posts_count==0){ echo '</div></div>'; $innerBreak = 1;}else{$innerBreak = 0;}
$loop_counter++; endwhile; 
else: 
echo "<div>No Results Found</div>";
endif;  
?>
0 голосов
/ 08 июня 2019

В строке $wpb_all_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>6)); ?> вы используете 'posts_per_page'=>6. Попробуйте: 'posts_per_page'=>-1 это загрузить все сообщения. Тогда попробуйте вместо вашего кода:

<!-- If you use bootstrap -->
<div class="container">
    <div class="row">
        <?php 
        $wpb_all_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>6)); ?>
        <?php if ( $wpb_all_query->have_posts() ) : ?>
            <?php while( $wpb_all_query->have_posts() ){ $wpb_all_query->the_post(); ?>

                <div class="col-md-4">
                    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <?php the_excerpt(); // or the_content(); or any ?>
                </div>

            <?php } ?>
         <?php wp_reset_postdata(); ?>
        <?php endif; ?>
    </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...