Совет от гуру
Сломал уже всю голову.
Подскажите,пожалуйста,каким способом лучше реализовать такое:
Вывод новых постов:
Один пост отдельно (с большой картинкой) и рядом пять постов
Далее идут Самые просматриваемые:
Две колонки,в каждой также пост отдельно (с большой картинкой) и под ним пять постов
Загвоздка в том ,что не могу сообразить как лучше и правильнее сделать именно такой вывод.
Попытался с помощью сортировки,но получается какая-то...т.е не устраивает что-то...
Признаюсь,что такое сделал на CMS DLE(там все проще намного),но хочу все-таки для сайта воспользоваться WP.
Решил сделать без плагинов,штатными средствами,с помощью сайдбаров.
С сортировкой вроде бы разобрался,но остаются вопросы: при post-page-pre при значении 1 отображается 2 поста; насколько столько сайдбаров будет влять на скорость и загрузку сайта в целом.
Что, в чем конкретно проблема?
Сделал так (front-page.php):
Сортировка постов:
SB-1 (выводится почему-то 2:
$args = array( 'posts_per_page' => 1, );
SB-2 (выводится почему-то 10):
$args = array( 'posts_per_page=5&offset=1' );
SB-3 (выводится почему-то 3:
$args = array( 'posts_per_page' => 2, );
SB-4 (выводится почему-то 10):
$args = array( 'posts_per_page=5&offset=2' );
И как все это победить,хз.
1) Какой функцией делаешь запрос?
2) Поищи фильтры pre_get_posts
возможно где-то через этот хук меняются параметры запроса. Или это может быть плагин, или код левый какой-то.
<?php $args = array( 'posts_per_page' => ЗНАЧЕНИЕ, ); $query = new WP_Query( $args ); ?> <?php if ( $query->have_posts() ) : ?> <?php while ( $query->have_posts() ) : $query->the_post(); ?>
При 'posts_per_page' => 1
должна выводится одна запись! Раз этого не происходит, значит где-то запрос меняется уже внутри WP_Query. Тебе нужно найти какой код меняет запрос. См. WP_Query::get_posts().
Стесняюсь спросить даже.Куда вставлять этот код?
Полный код сайдбара который выводит 2 поста вместо 1:
<?php $args = array( 'posts_per_page' => 1, ); $query = new WP_Query( $args ); ?> <?php if ( $query->have_posts() ) : ?> <?php while ( $query->have_posts() ) : $query->the_post(); ?> <article itemscope itemtype="http://schema.org/Article"> <div class="post"> <a class="full-post" href="<?php the_permalink();?>"> <?php $args = array( 'post_type' => 'attachment', 'numberposts' => 1, 'post_status' => null, 'post_parent' => $post->ID, 'exclude' => get_post_thumbnail_id() ); $attachments = get_posts( $args ); if ( $attachments ) : foreach ( $attachments as $attachment ) { echo wp_get_attachment_image( $attachment->ID, 'full', false, array ("class" => "img-fluid img-thumbnail")); }; else: print '<img class="img-fluid img-thumbnail" src="'. get_bloginfo('template_directory'). '/images/no_image.jpg' . '" alt="no image" />'; endif; ?></a> <div class="post-block"> <span class="post-title"> <a class="full-post" href="<?php the_permalink();?>"><?php the_title();?></a> </span> <div class="post-info"> <span><i class="fa fa-calendar"></i><?php the_time('j F Y');?></span> <span><i class="fa fa-eye"></i><?php echo get_post_meta( $post->ID, 'views', true ); ?></span> <span><i class="fa fa-commenting-o"></i><?php comments_number( '0', '1', '%'); ?></span> </div> <?php the_excerpt();?> </div> </div> </article> <?php endwhile; ?><?php endif; ?>
Блин тебе наверное проще будет обратиться к специалистам. Код который ты скинул в целом норм, почему неправильно работает 'posts_per_page' нужно выяснить...
Не знаю как и почему,но стало все нормалек отображаться.Есть подозрение на что-то "прилетевшее" с постами отсюда,т.к после удаления всех тест-постов,стало норм...Больше никаких мыслей по этому поводу нету...
А в чем проблема конкретно, что именно не получается?