Sie können ein taxonomiebezogenes Argument nicht an übergeben get_posts()
. (Bearbeiten: Ja, das können Sie. Der Codex ist nur etwas unklar. Wenn Sie sich die Quelle ansehen, get_posts()
ist dies im Kern nur ein Wrapper für WP_Query()
.) Sie können Metaschlüssel / -werte und Post- Typen übergeben , jedoch keine Taxonomien wie Post Format. Also für diese Zeile:
$myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');
Ich würde WP_Query()
eher empfehlen als 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'
)
)
) );
Hinweis: Ja, das sind viele verschachtelte Arrays. Steueranfragen können so schwierig sein.
Der nächste Schritt besteht darin, die Anweisungen zum Öffnen / Schließen der Schleife zu ändern. Ändern Sie diese:
<?php foreach($myposts as $post) : ?>
<?php /* loop markup goes here */ ?>
<?php endforeach; ?>
... dazu:
<?php if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>
<?php /* loop markup goes here */ ?>
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
Ihr tatsächliches Loop-Markup sollte gleich bleiben können, außer dass Sie nicht mehr aufrufen müssen 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>
Also, alles zusammen:
<?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();
Postformate sind nur vordefinierte Begriffe in einer so genannten Taxonomie.
post_format
Sie sollten daher in der Lage sein, die WP-Vorlagenhierarchie zum Erstellen von Postformatarchiven zu verwenden. Erstellen Sie einfach eine Datei, dietaxonomy-post_format-post-format-standard.php
im Stammverzeichnis Ihres Themas aufgerufen wird, und diese Datei wird verwendet, um alle Ihre Standardbeiträge auszugeben. Sie können mit allen anderen Formatnamen, wie ‚Standard‘ ersetzenaside
,link
odervideo
, so zBtaxonomy-post_format-post-format-video.php
. Dies funktioniert übrigens auch für jede andere Taxonomie, solange Sie sich an dieses Format halten:taxonomy-{TAXONOMY_NAME}-{TERM_NAME}.php
Wenn Sie Beitragsformate mit einer benutzerdefinierten Schleife anzeigen möchten, z. B. in Ihrer Seitenleiste oder in einer Seitenvorlage, können Sie die Steuerabfrage von @kaiser verwenden. Ersetzen Sie einfach die Taxonomie durch
post_format
und die Schnecken durchpost-format-{FORMAT_NAME}
.quelle
Für zwei verschiedene Taxonomien. Für einen einzelnen können Sie das
relation
Argument weglassen.quelle
Sie können so einen Trick machen:
Dies liegt daran, dass get_post_format () für das Standardpostformat false zurückgibt. http://codex.wordpress.org/Function_Reference/get_post_format
quelle
'posts_per_page' => 6
und 4 Beiträge mit NICHT Standardvorlage haben, werden nur 2 Beiträge angezeigt, nicht die 6, die sichtbar sein sollten. Das Filtern der Abfrage ist der Beweis dafür.