Пытается получить столбцы ниже категории с несколькими циклами в таможенном налоге

надеясь, что кто-то здесь может помочь noob.

В идеале я хотел бы получить заметку из категории «Featured Club», чтобы отобразить выше трех сообщений из одного и того же настраиваемого типа сообщений. У меня есть следующие рабочие, но для одного я использую две петли, где я уверен, что один будет работать, а два – результаты в полноразмерной записи, отображаемые в столбце, и мне нужны они в строке.

Кроме того, у меня есть другой пользовательский тип сообщения, который я хотел бы отображать на той же странице в этом блоке, с другой «Featured Category», и тем, как я собираюсь, у меня будет четыре петли.

Посмотрите вперед, чтобы получить некоторую помощь.

Вот код:

<h2 class="home-title">Jazz Clubs</h2> <?php $args = array ( 'post_type' => 'jazz clubs', 'meta_query' => array( array( 'key' => '_jazz_club_feature_club', ), ), ); // The Query $jazzclubs = new WP_Query( $args ); // The Loop if ( $jazzclubs->have_posts() ) { while ( $jazzclubs->have_posts() ) { $jazzclubs->the_post(); ?> <h3><?php the_title() ?></h3> <?php the_post_thumbnail() ?> <div class='post-content'><?php the_excerpt() ?></div> <?php } } else { // no posts found } wp_reset_postdata(); ?> </div> </div> <div class="row"> <div class="small-12 large-4 columns" id="home-club"> <?php // WP_Query arguments $args = array ( 'post_type' => 'jazz clubs', 'orderby' => 'date', ); // The Query $jazzclubs = new WP_Query( $args ); // The Loop if ( $jazzclubs->have_posts() ) { while ( $jazzclubs->have_posts() ) { $jazzclubs->the_post(); ?> <div id="homeclub"> <div class="homethumb"> <?php the_post_thumbnail() ?> <h5 id="city"class="h5"><span><?php $terms = get_the_terms( $post->ID , 'city' ); if ( $terms != null ){ foreach( $terms as $term ) { print $term->name ; unset($term); } } ?></span></h5> </div> <h4 id="home"class="h4"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4> <h6 id="home"class="h6"><?php the_date('F j Y'); ?></h6> <div class='post-content'><?php the_excerpt() ?></div> </div> <?php } } else { // no posts found } // Restore original Post Data wp_reset_postdata(); ?> </div> 

… для одного я использую две петли, где я уверен, что один будет работать …

Я не думаю, что один запрос будет легко сделать здесь. Также может быть сложно поддерживать код, если все было сделано в одном запросе базы данных. Пять запросов (4, которые вы запускаете, плюс основной запрос WordPress работает) много, но кеширование может помочь уменьшить среднее число запросов, запущенных на просмотр страницы.

… и два, результаты под полной шириной, опубликованные в столбце, отображаются в столбце, и мне нужны они в строке.

Это можно исправить с помощью CSS. Поиск в Google для горизонтальных списков для CSS-примеров делает это со списками ( <ul> и <ol> ). Довольно легко адаптировать аналогичный стиль к div.


В коде есть еще кое-что.

Во-первых, похоже, что в городской таксономии будет только один город, и тестирование результата get_the_terms() для null – это не достаточно хороший тест. get_the_terms() может возвращать объект WP_Error .

 $terms = get_the_terms( $post->ID , 'city' ); if ( $terms != null ) { foreach( $terms as $term ) { print $term->name ; unset($term); } } с $terms = get_the_terms( $post->ID , 'city' ); if ( $terms != null ) { foreach( $terms as $term ) { print $term->name ; unset($term); } } 

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

 function wpse_117541_the_post_city() { global $post; $terms = get_the_terms( $post->ID , 'city' ); if ( $terms && ! is_wp_error( $terms ) ) echo $terms[0]->name; echo ''; } 

Примечание. Я не полностью тестировал эту функцию.

В коде вы можете использовать его так:

  <h5 id="city" class="h5"><span><?php wpse_117541_the_post_city(); ?></span></h5> 

Во-вторых, каждый атрибут id HTML должен быть уникальным. Он не может появляться на веб-странице более одного раза.

В вашем коде этот HTML-код появляется в цикле строк:

 <div id="homeclub"> <div class="homethumb"> <?php the_post_thumbnail() ?> <h5 id="city" class="h5"><span><?php wpse_117541_the_post_city(); ?></span></h5> </div> <h4 id="home" class="h4"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4> <h6 id="home" class="h6"><?php the_date( 'F j Y' ); ?></h6> <div class='post-content'><?php the_excerpt() ?></div> </div> 

Если есть 1 строка из 4 столбцов, будет 4 homeclub и 8 home id . Использование имени класса, которое совпадает с именем элемента, не дает вам большой пользы. В CSS элементы h4 можно стилизовать, используя селектор h4 . Добавление class HTML с тем же именем позволяет использовать .h4 в качестве селектора.

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

 <div class="home-club"> <div class="thumb"> <?php the_post_thumbnail() ?> <h5 class="city"><span><?php wpse_117541_the_post_city(); ?></span></h5> </div> <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4> <h6><?php the_date( 'F j Y' ); ?></h6> <div class='post-content'><?php the_excerpt() ?></div> </div> 

В таблице стилей используйте эти селектора CSS для стилизации каждой части:

 .home-club {} .home-club thumb {} .home-club h5 {} or .home-club .city {} .home-club h4 {} .home-club h6 {} .home-club post-content {} 

{} будет содержать стили для этой части HTML, если таковые имеются. Я использовал home-club потому что предпочитаю разделять слова в именах классов с тире.


В-третьих, вам нужно будет только wp_reset_postdata() после завершения всех ваших пользовательских циклов. Это означает сброс данных сообщения (которые были сбиты с каждым вызовом the_post() ) для запроса, который WordPress использовал для the_post() к этой странице.

Вы сбросите данные, чтобы другой код, например код виджетов, видел данные основного запроса, который ожидается, а не данные ваших пользовательских запросов, которые не ожидаются. Вероятно, это не помешает назвать это несколько раз, но это не нужно.