使用date query 按日期获取下一篇和上一篇(附件)文章。并从当前父帖子中排除所有子附件。
<?php
// use in template for single attachment display
// get all children ids (to exclude from the queries for next and previous post)
$args = array(
\'post_status\' => \'inherit\',
\'post_type\' => \'attachment\',
\'post_mime_type\' => \'image\',
\'fields\' => \'ids\',
\'post_parent\' => $post->post_parent,
);
// get image attachments of parent (current post will be included)
$children_ids = get_children( $args );
$args = array(
\'post_status\' => \'inherit\',
\'post_type\' => \'attachment\',
\'post_mime_type\' => \'image\',
\'posts_per_page\' => 1,
\'order\' => \'DESC\',
\'post__not_in\' => $children_ids,
\'date_query\' => array(
array(
\'before\' => $post->post_date,
\'column\' => \'post_date\',
),
)
);
// get attachment with post date before current post date
$previous = get_posts( $args );
if ( isset( $previous[0]->ID ) ) {
echo wp_get_attachment_link( $previous[0]->ID, \'thumbnail\', true );
}
// remove before
unset( $args[\'date_query\'][0][\'before\'] );
// add after and change order
$args[\'order\'] = \'ASC\';
$args[\'date_query\'][0][\'after\'] = $post->post_date;
// get attachment with post date after current post date
$next = get_posts( $args );
if ( isset( $next[0]->ID ) ) {
echo wp_get_attachment_link( $next[0]->ID, \'thumbnail\', true );
}
?>