在主页上防止两个循环之间的重复帖子的问题

时间:2013-12-01 作者:cody

我知道这个话题以前已经讨论过多次了,但我已经尝试了我在网上找到的每一个教程,但都没有找到答案。

我正在使用免费的NewsMojo主题(http://fthemes.com/newsmojo-free-wordpress-theme/) 在我的博客上(http://eldoradofrontier.com/) 并希望在“特色”旋转木马中出现的帖子不也出现在其下方的主提要中。我不想使用任何类别过滤,因为我希望我的网站有太多的新帖子,因此必须返回并从特色转盘中删除旧帖子才有意义。

我对PHP了解不多,但我尝试了codex中提到的$do\\u not\\u duplicate技巧(它不会让我发布链接,因为我是新手),但没有成功。

据我所知,我的主页上有两个循环:

一个,在文件模板中。“featuredposts”文件夹中的php:

<?php
            $featuredposts_source = $this->theme->get_option(\'featuredposts_source\');
            $featuredposts_moreoptions = $this->theme->get_option(\'featuredposts_moreoptions\');

            $featuredposts_query = false;

            if($featuredposts_source == \'category\') {
                if($this->theme->display(\'featuredposts_source_category\')) {
                    $featuredposts_query = \'posts_per_page=\' . $this->theme->get_option(\'featuredposts_source_category_num\') . \'&cat=\' . $this->theme->get_option(\'featuredposts_source_category\');
                } 
            } elseif($featuredposts_source == \'posts\') {
                if($this->theme->display(\'featuredposts_source_posts\')) {
                    $featuredposts_query = array(\'post__in\'=> explode(\',\', trim($this->theme->get_option(\'featuredposts_source_posts\'))), \'post_type\'=>\'post\');
                } 
            } elseif($featuredposts_source == \'pages\') {
                if($this->theme->display(\'featuredposts_source_pages\')) {
                    $featuredposts_query = array(\'post__in\'=> explode(\',\', trim($this->theme->get_option(\'featuredposts_source_pages\'))), \'post_type\'=>\'page\');
                } 
            }

            if($featuredposts_query) {
                $featuredposts_excerpt_length = $this->theme->get_option(\'featuredposts_excerpt_length\');
                query_posts($featuredposts_query);
                if (have_posts()) : while (have_posts()) : the_post(); 
                ?>
接下来,在文件循环中。php:

<?php
global $theme;
if (have_posts()) : while (have_posts()) : the_post();
?>
我想我需要在第一个循环中创建一个带有帖子ID的数组,然后告诉第二个循环忽略那些帖子。。。正当但我该怎么做呢?

提前感谢您的帮助,并对noob问题表示抱歉-科迪

1 个回复
SO网友:Rarst

与通常的多个循环(其中一个是主循环)一样,问题很复杂。

它看起来像什么正在发生:

次要循环运行并处理一些帖子实际发生了什么:

WordPress核心已加载要干净利落地完成您想要的任务,需要:

将功能逻辑完全移出模板,使用它覆盖在上为主循环查询的内容pre_get_posts hook(海量主题本身,在站点上搜索)

  • 存储这些信息,然后以这种方式在模板中运行自定义循环
    • 这并不太复杂,但非常简单,而且容易出错(就像我在没有实际主题和站点的手动访问和测试的情况下,甚至不会尝试通过片段来修改这一内容)。

    结束

    相关推荐

    Add filter to comments loop?

    我正在制作一个插件,用于存储推荐人数据以供评论。我已经创建了数据库表,并且在进行注释时正确存储了数据。现在,我想为每个注释在注释块上附加一个自定义div。如何向注释循环添加过滤器?我想说“如果这个评论ID在我的表中有一个推荐人,那么在我的特殊div中打印出推荐人”。我可以自己写函数,我只需要在哪里注入函数的帮助。