如何在媒体内容中添加两条帖子?

时间:2019-03-20 作者:MantaRay

目标:在媒体页面(图像)上,找到图像添加到的原始帖子(Wordpress已经这样做了),然后打印之前的两篇文章。

这段代码在给定的帖子下面打印前面的两篇文章Add to previous posts under post

但是,我还想将此功能应用于WordPress MEDIA,以便在MEDIA image页面下,打印在文章之前发布的两篇文章。

ie

Media image (from article 17)
Article 16 (complete as it would be if viewing the post)
Article 15 (complete as it would be if viewing the post)
虽然我不确定WordPress是否能做到这一点。

1 个回复
SO网友:WebElaine

首先,通过指定post类型修改示例post 以及移除catpost__not_in 参数。接下来,如果您想确保查看的是家长的日期而不是媒体的日期,您还需要确保有回退,以防有人试图查看未附加到帖子的图像(因此没有家长)。

// Make sure we can access the current $post, which is media
global $post;
// If the media isn\'t attached
if($post->post_parent == 0) {
    // Use the media itself\'s upload date
    $date = $post->post_date;
} else {
    // Get the parent post
    $parent = get_post($post->post_parent);
    // Use its date
    $date = $parent->post_date;
}
// Get 2 Posts
$qry = new WP_Query(
    array(
        // This pulls exactly 2 posts
        \'posts_per_page\' => 2,
        // This pulls only Posts
        \'post_type\' => \'post\',
        // This finds posts published before the current item
        \'date_query\' => array(
            array(
                \'before\' => $date,
            ),
        ),
    )
);
然后,您需要对结果进行一些处理。你可以从一个简单的print_r($qry); 要确保已检索到您想要的帖子,然后转到自定义循环以实际显示它们,请执行以下操作:

if($qry->have_posts()):
    while($qry->have_posts()) : $qry->the_post();
        // Set up whatever html structure you want here ?>
        <hr/>
            <article>
            <h2><?php the_title(); ?></h2>
            <?php the_content(); ?>
        </article><?php
    endwhile;
endif;
这将创建一条水平规则,然后显示第一篇文章的标题和内容,然后显示另一条规则,然后显示第二篇文章的标题和内容。