Запросить только сообщения с почтовым форматом «аудио»

Я пытаюсь запросить только сообщения, которые имеют формат почтового сообщения. Я почти уверен, что делаю это неправильно. Могу ли я немного помочь?

  <?php get_header();?> <section id="content"> <section id="latest-blogs"> <?php $i=1; $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(); $wp_query -> query('post-format-audio'.'&paged='.$paged) ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="article-wrapper"> <span class="top-left-corner"></span> <span class="top-right-corner"></span> <article id="post-<?php the_ID(); ?>"> <span class="top-corners"></span> <time datetime="<?php the_time('c'); ?>"><?php the_time('F j, Y'); ?></time> <?php $myvalue = get_field( "buzzsprout_shortcode" ); echo do_shortcode("$myvalue"); ?> <p class="read-emails"><a href="<?php the_permalink() ?>" rel="bookmark" title="View emails and comment on this episode.">View emails and comment on this episode</a></p> <span class="bottom-corners"></span> </article> <span class="bottom-left-corner"></span> <span class="bottom-right-corner"></span> </div> <?php endwhile;endif; ?> <div id="pagination"> <?php my_paginate_links(); ?> </div> </section> </section> <?php get_sidebar(); ?> <?php get_footer(); ?> 

Solutions Collecting From Web of "Запросить только сообщения с почтовым форматом «аудио»"

Прежде чем мы продолжим, я должен указать на это:

  $i=1; $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(); $wp_query -> query('post-format-audio'.'&paged='.$paged) 

Это точно так же, как:

 query_posts( 'post-format-audio'.'&paged='.$paged ); 

Что ужасно. Когда люди советуют не использовать query_posts , это не просто функция, это плохо, это то, что она делает.

К счастью, кто-то рассказал вам о WP_Query , но они не закончили работу.

Это то, к чему должен выглядеть ваш цикл запросов:

 $args = array( 'post_format' => 'post-format-audio' ); $q = new WP_Query( $args ); if ( $q->have_posts() ) { while( $q->have_posts() ) { $q->the_post(); the_title(); // etc } wp_reset_postdata(); // clean up after ourselves } 

Важная роль заключается в том, что почтовые форматы сохраняются как пользовательская таксономия внутри страны с названием таксономии «post_format».

Но даже это плохо!

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

Так что если это ваша домашняя страница, вы можете сделать это:

 function audio_only( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'post_format', 'post-format-audio' ); } } add_action( 'pre_get_posts', 'audio_only' ); 

С этим в плагине или functions.php вашей домашней странице будут отображаться только сообщения с форматом аудиозаписей. Вы можете переопределить отдельные терминные архивы, поисковые запросы, RSS-каналы и т. Д., Используя это, где угодно, где есть основной цикл.

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

Дальнейшее чтение

  • Вы не знаете запроса, Andrew Nacin

Итоговые заметки

  • echo do_shortcode("$myvalue"); расточительно, нет необходимости в котировках, используйте echo do_shortcode( $myvalue ); вместо этого, это немного быстрее набирать и более дружелюбно для редакторов и кода intel
  • Я знаю, что код использует его, но не беспокойтесь, if(): while() : the_post(); , вместо этого используйте скобки скобки {} и переместите их на свои собственные линии. 1 / команда на строку. Снова это легче читать и намного лучше для автоматизированных инструментов и редакторов, и всем нам нужна вся помощь, которую мы можем получить, чтобы мы могли сосредоточиться на важных вещах
  • Все эти элементы <span class="top-left-corner"></span> угла <span class="top-left-corner"></span> могут быть удалены и заменены несколькими фреймами CSS, border-radius или :after и :before css selectors