此代码片段已成为 WordPress 插件!
类别显然是使用 WordPress 的网站和博客的主要“分类”实用程序。有时您希望一个类别代表的不仅仅是基本的帖子主题分类——您可能希望您的博客类别代表到外部站点的链接和文章,或者可能希望以不同的方式显示他们的帖子。在此博客上,我添加了一个“快速提示”类别,这些帖子非常短,带有微小的代码片段,(快速)详细说明了如何做一些简单的事情。我希望这些帖子显示在列表页面上,而不是主页上。我见过一些实现这一壮举的危险代码,但幸运的是,我找到了一种更简洁的方法来防止给定类别中的帖子显示在主页上。
WordPress PHP
WordPress 的 API 提供了一个pre_get_posts
操作,它允许额外的预查询逻辑:
// No "Quick Tips" on the homepage function preventHomepageTips($query) { if($query->is_home() && $query->is_main_query()) { $query->set('cat', '-40'); // 40 is Quick Tips's category ID } } add_action('pre_get_posts', 'preventHomepageTips');
上面的自定义函数作为 WordPress 操作添加,通常在您的 functions.php 文件中。知道不想在主循环中显示的一个或多个类别的 ID 很重要。破折号位于所述类别 ID 之前。为了防止多个类别,用逗号分隔它们:
$query->set('cat', '-40,-52');
如果您只是想阻止帖子显示在主页上但又不想影响后续的存档页面,您可以添加另一个 hackish 条件:
if($query->is_home() && $query->is_main_query() && $_SERVER['REQUEST_URI'] == '/') {
这是一个非常有用的片段,可用于多种用途。例如,Chris Coyier 为他的“热门链接”帖子(指向外部网站的链接)使用了一个特殊的类别,显然他没有在主循环中显示这些类别。不过你已经做到了——防止类别中的帖子显示循环!