Intereting Posts
Как удалить файл, загруженный Plupload Как создать сайт wordpress, который будет иметь сервисы и продукты на основе местоположения? почему эта функция срабатывает во всех элементах детского меню? Как отключить блог и архивы? Фильтровать категории сообщений WordPress с помощью jquery / ajax и pagination? Где происходит «фактически» перевод WordPress Core? Регулярное обновление персонализированного сообщения Как изменить виджет WordPress по умолчанию, чтобы иметь заголовки в привязанных тегах? is_admin () не работает при обновлении сообщения в панели администратора Неисправность отображения отображаемого изображения в виде миниатюры при использовании доли в Facebook Как определить переменную для домена основного сайта, когда блог WordPress размещен в другом домене Странные символы отображаются при импорте WordPress MySQL db Очень медленная страница – как оптимизировать количество запросов? Я хочу заказать категории на основе последнего времени публикации ERR_TOO_MANY_REDIRECTS, когда я меняю http на https

2 цикла, is_home не будет работать, счет выключен

Хорошо, за эти годы я создал множество тем, и я написал много запросов. И я просто понял, что я, по-видимому, не знаю, как заставить несколько запросов вести себя. Итак, вот петли из моего index.php:

<?php do_action( 'voodoo_pre_loop' ); ?> <?php if( is_home() ) : ?> <?php $args = array( 'posts_per_page' => 1, 'post__in' => get_option( 'sticky_posts' ), 'ignore_sticky_posts' => 1 ); $my_query = new WP_Query( $args ); while ($my_query->have_posts()) : $my_query->the_post(); $do_not_duplicate = $post->ID; ?> <?php get_template_part( 'content', 'featured' ); ?> <?php endwhile; ?> <?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?> <?php dynamic_sidebar( 'sidebar-2' ); ?> <?php endif; ?> <?php $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; $more_args = array( 'posts_per_page' => 9, 'post__not_in' => get_option( 'sticky_posts' ), 'paged' => $paged ); query_posts( $more_args ); ?> <?php endif; ?> <?php if ( have_posts() ) : ?> <?php voodoo_content_nav( 'nav-above' ); ?> <?php while ( have_posts() ) : the_post(); if( $post->ID == $do_not_duplicate ) continue; ?> <?php $format = get_post_format(); if ( false === $format ) $format = 'standard'; get_template_part( 'content', $format ); ?> <?php endwhile; ?> <?php voodoo_content_nav( 'nav-below' ); ?> <?php else : ?> <?php voodoo_else(); ?> <?php endif; ?> 

Итак, то, что я ожидал, должно было состоять в петле. Он просто схватил бы один пост. Если бы был липкий, мы бы схватили его. Если нет, то последнее сообщение. Это всегда будет работать с содержанием, отображаемым для отображения. Кажется, что этот цикл работает. Я получаю палку / или нет, если ее нет. И вызывается контент-функция. Это все в is_home, потому что я хочу, чтобы это произошло на домашней / главной странице.

Еще в is_home есть область виджетов. Это не сложно.

Затем, второй цикл. Моя логика, запрос все еще находился внутри is_home. На первой странице я хотел 9 сообщений, никогда никаких липких, никаких дубликатов этого первого сообщения. На последующих страницах я понял, что мне не нужен этот запрос. Я просто хочу, чтобы все остальные страницы отображали мои стандартные 10 сообщений. Нет признака, нет боковой панели и т. Д.

Поэтому, когда это кажется мне причиной, это первый пост, виджет и беспорядок.

Эта вторая область, я только когда-либо получаю 7 сообщений. На последующих страницах я до сих пор получаю этот первый признанный цикл, который мне не нужен. И я получаю только 8 сообщений. Я читал по всему Интернету, и я, очевидно, ничего не понимаю.

Любые идеи: Почему is_home или is_front_page не будут работать здесь? Почему я не могу правильно получить мои номера? (1 + 9 сообщений дома, 10 сообщений, оставшихся страниц)

Мне бы очень понравилась небольшая помощь, чтобы я мог понять все это немного лучше. Благодаря!

Solutions Collecting From Web of "2 цикла, is_home не будет работать, счет выключен"

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

Кроме того, я бы использовал $my_query_2 = new WP_Query( $more_args ); для второго – я не понимаю, почему лучше вернуться к использованию query_posts() . Это может быть полезно прочитать.

В то время как были на нем: он не должен влиять на функциональность вашего кода вообще, но почему в мире существует так много открывающих и закрывающих тегов <?php (т.е. <?php и ?> )? Это может иметь смысл, если у вас есть разметка HTML между ними и не нравится эхо, но, учитывая, что это не так, просто поместите <?php вверху документа (или соответствующего раздела) и ?> Внизу. Это сделает для более четкого кода как для вас самих, так и для людей, которые вам помогают.

EDIT: Мкай. Это работает, как ожидалось, на моей установке dev:

 <ul> <?php $per_page = is_paged() ? 10 : 9; $stickies = get_option( 'sticky_posts' ); $offset = empty( $stickies ) ? 1 : 0; if( is_home() && !is_paged() ) { $per_page = 9; $args_first_query = array( 'posts_per_page' => 1, 'post__in' => $stickies, 'ignore_sticky_posts' => 1 ); $first_query = new WP_Query( $args_first_query ); if( $first_query->have_posts() ) { while ($first_query->have_posts()) : $first_query->the_post(); // replace with your template part: echo '<li>Latest Sticky:'.get_the_title().'</li>'; endwhile; } wp_reset_postdata(); } // your sidebar $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; $args_main_query = array( 'posts_per_page' => $per_page, 'post__not_in' => $stickies, 'paged' => $paged, 'offset' => $offset ); query_posts( $args_main_query ); if( have_posts() ) { while ( have_posts()) : the_post(); $format = get_post_format(); if ( false === $format ) $format = 'standard'; echo '<li>'.get_the_title().'</li>'; endwhile; } // pagination, with check for WP-PageNavi plugin if ( function_exists('wp_pagenavi') ) { wp_pagenavi(); } elseif ( get_next_posts_link() || get_previous_posts_link() ) { next_posts_link( '&laquo; Older Entries' ); previous_posts_link( 'Newer Entries &raquo;' ); } wp_reset_query(); ?> </ul> 

Я бы посоветовал вам проверить, работает ли это выше на вашем сайте. Если это так, отбросьте свой собственный материал по одному, посмотрите, не сработает ли он, и если да, то когда.

Эта проверка, if( $post->ID == $do_not_duplicate ) continue; определенно лишнее, учитывая, что первый запрос принимает только листы, а второй – вовсе. Таким образом, вы можете точно опустить эту строку и связанный с ней в первом запросе.