📅  最后修改于: 2023-12-03 15:06:00.882000             🧑  作者: Mango
在 Wordpress 上开发主题或插件时,你可能会需要在循环中排除当前文章或页面。这个问题在以下情况特别突出:
以下内容将介绍三种可行的方式来排除当前文章或页面:
此方式比较简单,适用于单篇文章或页面上需要排除当前文章或页面的情况。
<?php
if (have_posts()):
while (have_posts()): the_post();
// exclude current post or page
if ($post->ID == $exclude_id) continue;
// your code here
endwhile;
endif;
?>
注意:上文中的 $exclude_id 是需排除文章或页面的 ID。
此种方式适用于需要获取指定文章分类等条件的文章列表时排除当前文章或页面。
<?php
$exclude_post = array($post->ID);
$args = array(
'category_name' => 'your_category_name', // replace with your category name or other condition
'post_type' => 'post',
'exclude' => $exclude_post
);
$query = get_posts($args);
foreach ($query as $post) :
setup_postdata($post);
// your code here
endforeach;
wp_reset_query();
?>
注意:上文中的 $exclude_post 是需排除文章或页面的 ID 数组。
此种方式适用于需要在循环之前排除当前文章或页面的情况。
<?php
function exclude_current_post_from_loop($query) {
if ($query->is_home() && $query->is_main_query()) {
$exclude_post = array($GLOBALS['post']->ID);
$query->set('post__not_in', $exclude_post);
}
}
add_action('pre_get_posts', 'exclude_current_post_from_loop');
?>
注意:上文中的 $GLOBALS['post']->ID 是需排除文章或页面的 ID。
到此为止,我们便介绍了三种可行的方式来排除当前文章或页面。你可以按照你的实际情况来选择使用哪一种方式。