主循环仅在自定义类别存档页面中查询当前模板的信息,而不是我的帖子

时间:2017-01-28 作者:CoderScissorhands

我有一个问题,为什么在使用模板文件时,主查询会调用当前页面的信息,而不是查询帖子。

如果通过使用创建自定义查询来修改循环new WP_query, 我可以访问自定义模板上的所有帖子。然而,当我尝试在我的自定义模板上使用主循环/查询时have posts()the_post() 我的页面似乎在查询有关当前页面的信息(例如,当\\u标题和\\u日期与当前页面匹配时,而不是我的帖子)。

奇怪的是,我的头版似乎不是这样。首页的主查询很好。关于“have posts”这样的循环的主要功能为什么会调用当前页面来获取模板的信息,而不是查询帖子,你有什么想法吗?我做错了什么?

我用过wp_reset_query() 当我使用主循环时,在所有循环之后wp_reset_postdata() 在我使用的所有循环之后new WP_query.

更新时间:

幸亏@Milo\'我发现我误解了WordPress的工作原理。我想为特定类别的achive页面定制模板,例如“特殊”类别。

我正在使用:

类别的自定义模板,具有任意名称(例如。special.php) special.php我试图使用带有任意名称的自定义页面/模板的主post查询。

我现在意识到,我可以更优雅地完成使用基于帖子的主查询的自定义类别页面,而无需重新路由/归档。php解决方案。更好的方法是重命名自定义类别。我创建的php文件,具有任意名称(例如。special.php) 名称与WordPress的本机类别约定匹配。此约定要求您使用category- 前缀与目标类别名称(例如category-special.php).

我重新命名了那个风俗。php文件的名称使用category- 并删除了我在存档中创建的重新路由。php。在采取这两个步骤之后,我只能使用主循环函数(例如。have_post()the_post) 并为该类别定制设计/元素/html/php。

谢谢@Milo!

在WordPress中有很多复杂的东西需要发现,但很好地解决了它们!

2 个回复
SO网友:Vishal Kumar Sahu

检查页面和帖子的slug或url。如果有同名的页面,它将查询该页面。

SO网友:Milo

主查询在加载模板之前运行。主查询的结果是WordPress如何知道要加载的模板。在模板中运行的任何查询都与主查询无关。

您指定为帖子页面的页面是一个特例。当解析请求并确定该请求是针对显示帖子的页面时,主查询将填充帖子,而不是该页面的数据。这是唯一一个这样操作的页面。

在任何其他情况下,如果您在模板中创建自定义查询,则在加载模板之前,主查询已经填充了该页面的数据。

相关推荐

使用WP_QUERY混合发布日期和发布元值

正在寻找使用自定义字段将旧帖子推送到WP\\u查询中的方法。例如,我今年有10篇文章,想将过去的2篇文章重新发布到自定义rss提要。因此,对于旧帖子,必须按照帖子日期和帖子元中的值对帖子进行排序:new post - (post date: 2018-11-11) new post - (post date: 2018-11-10) old post - (post date: 2017-05-01, post-meta date: 2018-11-09) new post - (