从相关帖子中排除公开帖子

时间:2016-12-12 20:02:20

标签: php wordpress

如何从<?php $wp_query = null; $args = array( 'post_type' => 'glavna_vijest', 'numberposts' => 2 ); $wp_query = new WP_Query($args); while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <h3><?php the_title(); ?></h3> <?php endwhile; ?> 中的相关帖子中排除已打开的帖子?

这是我的代码:

{{1}}

1 个答案:

答案 0 :(得分:1)

您想知道如何不包含相关帖子中的当前帖子。正确的吗?

您知道帖子ID,因为它是一个帖子。这是当前正在显示的那个。您可以使用get_the_ID()并将其存储到名为$current_post_id = get_the_ID();的变量中。

当您运行相关帖子的查询时,请使用参数post__not_in并使用当前帖子ID指定它。

如何获取当前帖子ID?

single.php模板中,您可以使用get_the_ID()。然后,您可以将该帖子ID传递给相关内容函数。

代码段

使用上面的代码,您可以构建一个单独的函数来执行相关的内容部分,如下所示:

/**
 * Build and then render the related posts
 * section of the web page.
 *
 * @since 1.0.0
 *
 * @param int $current_post_id
 *
 * @return void
 */
function render_related_posts( $current_post_id ) {
    $args = array(
        'post_type'      => 'glavna_vijest',
        'posts_per_page' => 2,
        'post__not_in'   => array( $current_post_id ),
        'nopaging'       => false,
        // You may want to add a category query too
        // to make it more relatable to the current post
    );

    $related_posts_query = new WP_Query( $args );
    if ( ! $related_posts_query->have_posts() ) {
        return;
    }

    while( $related_posts_query->have_posts() ) {
        $related_posts_query->the_post();

        // do the rendering
    }
}

然后你可以在single.php模板文件中调用这样的函数:

render_related_posts( get_the_ID() );

您需要根据自己的特定需求调整代码。您可能希望扩展可关联的内容,以按元数据,类别或其他方式对其进行过滤,以缩小潜在帖子的范围。