获取最近的帖子,删除当前类别

时间:2021-05-08 作者:Anonymous

几个月来,我一直在尝试显示最近的帖子,不包括当前类别。我已经研究了几个论坛和几乎所有关于StackOverflow的内容,不幸的是,我的项目没有取得成功。

我需要以下功能的帮助:

我最近的帖子工作正常。我可以删除当前帖子并显示所有其他帖子。

我想做的是显示除当前类别之外的所有最新帖子。

示例:

我的类别:示例1/示例2/示例3/

假设用户正在查看此链接:

链接1=

领域com/category/example1/examplepost

在最近的帖子中,我想展示该类别的最后5篇帖子;示例2“;和;示例3;。

链接2=

领域com/category/example2/examplepost

在最近的帖子中,我想展示该类别的最后5篇帖子;示例1“;和;示例3;。

我在函数中使用了以下代码。php

add_action(\'pre_get_posts\', \'wpa_12345\' );
function wpa_12345( $wp_query ) {
 $excluded = array(5);
 if( !is_admin() ) {
 $wp_query->set(\'category__not_in\', $excluded);
 }
}
add_filter(\'pre_get_posts\', \'exclude_category\');
此代码允许我删除所选的类别。

我想一些代码,将自动识别当前类别,以排除在最近的职位。

I followed Abhik user\'s guidelines ...查看代码是否在函数中正确组装。php

function wpa_12345( $wp_query ) {

 //Get the current category ID
 $catID = get_queried_object_id();

 //Pass it to the Query arguments
 $args = array(
 //Your other arguments here
 \'category__not_in\' => array($catID),
 );

 $excluded_posts = new WP_Query($args);

 if( !is_admin() ) {
 $wp_query->set(\'category__not_in\', $excluded);
 }
}
add_filter(\'pre_get_posts\', \'exclude_category\');
即使重新组装代码,我也没有得到我所期望的。

1 个回复
SO网友:Abhik

假设您使用自定义查询从其他类别获取最新帖子。在这种情况下,你不需要pre_get_posts 作为category__not_in 参数可以直接传递到查询参数中。

//Get the current category ID
$catID = get_queried_object_id();

//Pass it to the Query arguments
$args = array(
    //Your other arguments here
    \'category__not_in\' => array($catID),
);
$excluded_posts = new WP_Query($args);

EDIT

function wpse_exclude_current_cat( $query ) {
    if ( !is_admin() && !$query->is_main_query() ) {
        if ( is_category() ) {
            $catID = get_queried_object_id();
            $query->set( \'category__not_in\', array($catID) );
        }
    }
}
add_action( \'pre_get_posts\', \'wpse_exclude_current_cat\' );

相关推荐

帖子标题而不是页面和类别标题--PHP WordPress

为了在一个网站上有两个博客,我可以在菜单中设置两个类别:文档和实现。我的问题是标题。标题显示得很好,但对于这两个类别,标题与页面最后一篇文章的标题相对应。。。您可以在图片中看到一个示例(您将看到联系人页面是可以的,但对于文档和实现页面,标题是上一篇文章的标题)。我想用文档和实现类别的标题替换这些文章标题。我想我已经找到了问题代码,但我不知道如何解决它。<?php if ( is_front_page() ) { ?> <div class=&qu