Только get_posts определенных форматов сообщений

Я пытаюсь создать список архивов только с моими «нормальными» статьями в формате post (не ссылки, в сторону, цитаты и т. Д.).

Как я могу реализовать has_post_format( 'standard' ) или что-то подобное в коде ниже?

Я не смог найти запрос для get_posts который запрашивает только определенные типы форматов.

 <?php // Get the posts $myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC'); ?> <?php foreach($myposts as $post) : ?> <?php // Setup the post variables setup_postdata($post); $year = mysql2date('Y', $post->post_date); $month = mysql2date('n', $post->post_date); $day = mysql2date('j', $post->post_date); ?> <p> <span class="the_article"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </span> &nbsp;&nbsp;&nbsp; <span class="the_day"> <?php the_time('j F Y'); ?> </span> </p> <?php endforeach; ?> 

В лучшем случае мои навыки работы с PHP находятся на начальном уровне, поэтому любая помощь будет высоко оценена.

Solutions Collecting From Web of "Только get_posts определенных форматов сообщений"

Вы не можете передать аргумент, связанный с таксономией, в get_posts() . (Edit: на самом деле, да, вы можете. Codex просто несколько неясен. Глядя на источник, get_posts() , в основе своей, просто оболочка для WP_Query() .) Вы можете передавать мета-ключи / значения и типы сообщений , но не таксономии, такие как почтовый формат. Итак, для этой строки:

 $myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC'); 

Я бы рекомендовал использовать WP_Query() а не get_posts() :

 $myposts = new WP_Query( array( 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-aside', 'post-format-audio', 'post-format-chat', 'post-format-gallery', 'post-format-image', 'post-format-link', 'post-format-quote', 'post-format-status', 'post-format-video' ), 'operator' => 'NOT IN' ) ) ) ); в $myposts = new WP_Query( array( 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-aside', 'post-format-audio', 'post-format-chat', 'post-format-gallery', 'post-format-image', 'post-format-link', 'post-format-quote', 'post-format-status', 'post-format-video' ), 'operator' => 'NOT IN' ) ) ) ); 

Примечание: да, это много вложенных массивов. Налоговые запросы могут быть сложными.

Следующим шагом будет изменение ваших операторов открытия / закрытия цикла. Измените их:

 <?php foreach($myposts as $post) : ?> <?php /* loop markup goes here */ ?> <?php endforeach; ?> 

…к этому:

 <?php if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?> <?php /* loop markup goes here */ ?> <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?> 

Ваша фактическая разметка цикла должна оставаться неизменной, за исключением того, что вам больше не нужно вызывать setup_postdata( $post ) :

 <?php $year = mysql2date('Y', $post->post_date); $month = mysql2date('n', $post->post_date); $day = mysql2date('j', $post->post_date); ?> <p> <span class="the_article"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </span> &nbsp;&nbsp;&nbsp; <span class="the_day"> <?php the_time('j F Y'); ?> </span> </p> 

Итак, все вместе:

 <?php // Only query posts with the // "standard" post format, which // requires *excluding* all other // post formats, since neither the // "post_format" taxonomy nor the // "post-format-standard" taxonomy term // is applied to posts without // defined post formats $myposts = new WP_Query( array( 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-aside', 'post-format-audio', 'post-format-chat', 'post-format-gallery', 'post-format-image', 'post-format-link', 'post-format-quote', 'post-format-status', 'post-format-video' ), 'operator' => 'NOT IN' ) ) ) ); // Open the loop if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?> $year = mysql2date('Y', $post->post_date); $month = mysql2date('n', $post->post_date); $day = mysql2date('j', $post->post_date); ?> <p> <span class="the_article"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </span> &nbsp;&nbsp;&nbsp; <span class="the_day"> <?php the_time('j F Y'); ?> </span> </p> <?php // Close the loop endwhile; endif; // Reset $post data to default query wp_reset_postdata(); в <?php // Only query posts with the // "standard" post format, which // requires *excluding* all other // post formats, since neither the // "post_format" taxonomy nor the // "post-format-standard" taxonomy term // is applied to posts without // defined post formats $myposts = new WP_Query( array( 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-aside', 'post-format-audio', 'post-format-chat', 'post-format-gallery', 'post-format-image', 'post-format-link', 'post-format-quote', 'post-format-status', 'post-format-video' ), 'operator' => 'NOT IN' ) ) ) ); // Open the loop if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?> $year = mysql2date('Y', $post->post_date); $month = mysql2date('n', $post->post_date); $day = mysql2date('j', $post->post_date); ?> <p> <span class="the_article"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </span> &nbsp;&nbsp;&nbsp; <span class="the_day"> <?php the_time('j F Y'); ?> </span> </p> <?php // Close the loop endwhile; endif; // Reset $post data to default query wp_reset_postdata(); 

Форматы сообщений – это только предопределенные термины в таксономии, называемой post_format , поэтому вы должны иметь возможность использовать иерархию шаблонов WP для создания архивов формата post. Просто создайте файл с именем taxonomy-post_format-post-format-standard.php в корне вашей темы, и этот файл будет использоваться для вывода всех ваших стандартных сообщений. Вы можете заменить «standard» на любые другие имена форматов, например, в aside , link или video , например, taxonomy-post_format-post-format-video.php . Это работает и для любой другой таксономии, кстати, если вы придерживаетесь этого формата: taxonomy-{TAXONOMY_NAME}-{TERM_NAME}.php

Если вы хотите показывать форматы сообщений с помощью настраиваемого цикла, например, на боковой панели или в шаблоне страницы, вы можете использовать налоговый запрос от @kaiser. Просто замените таксономию post_format и пулями с post-format-{FORMAT_NAME} .

Для двух разных таксономий. Для одного, вы можете оставить relation arg out.

 $args = array( 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'movie_janner', 'field' => 'slug', 'terms' => array( 'action', 'commedy' ) // Single terms as string - multiple as array ), array( 'taxonomy' => 'actor', 'field' => 'id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN' ) ) ); 

Вы можете сделать так:

 <?php while( have_posts() ) : the_post(); get_post_format()==false? get_template_part( 'loop', 'posts' ) : false; endwhile; ?> 

Это связано с тем, что get_post_format () для стандартного формата сообщения возвращает false. http://codex.wordpress.org/Function_Reference/get_post_format