Вы не можете передать аргумент, связанный с таксономией get_posts()
. (Правка: на самом деле, да, вы можете. Кодекс просто немного неясен. Глядя на источник, 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'
)
)
) );
Примечание: да, это много вложенных массивов. Налоговые запросы могут быть такими хитрыми.
Следующим шагом является изменение ваших операторов открытия / закрытия цикла. Измените это:
<?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>
<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>
<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 для создания архивов форматов записей. Просто создайте файл с именемtaxonomy-post_format-post-format-standard.php
в корне вашей темы, и этот файл будет использоваться для вывода всех ваших стандартных сообщений. Вы можете заменить «стандартный» любым другим именем формата, напримерaside
,link
илиvideo
, например, такtaxonomy-post_format-post-format-video.php
. Это работает и для любой другой таксономии, кстати, если вы придерживаетесь этого формата:taxonomy-{TAXONOMY_NAME}-{TERM_NAME}.php
Если вы хотите показывать форматы записей с помощью пользовательского цикла, например, на боковой панели или в шаблоне страницы, вы можете использовать налоговый запрос от @kaiser. Просто замените таксономию на
post_format
и слизняки наpost-format-{FORMAT_NAME}
.источник
Для двух разных таксономий. Для одного вы можете оставить
relation
аргумент вне.источник
Вы можете сделать трюк так:
Это потому, что get_post_format () для стандартного формата записи возвращает false. http://codex.wordpress.org/Function_Reference/get_post_format
источник
'posts_per_page' => 6
и имеете 4 сообщения с НЕ стандартным шаблоном, вы увидите только 2 сообщения, а не 6, которые должны быть видны. Фильтрация запроса