如何在 WordPress 查询和 RSS 提要中组合帖子和自定义帖子类型

WordPress 或 Elementor 在查询中合并或组合帖子和自定义帖子类型

WordPress 最令人惊叹的功能之一是能够构建 自定义文章类型. 这种灵活性非常棒……因为自定义帖子类型可用于企业轻松组织其他类型的帖子,如活动、地点、常见问题解答、投资组合项目。 您可以构建自定义分类法、附加元数据字段,甚至自定义模板来显示它们。

在我们的网站上 Highbridge,我们设置了一个自定义帖子类型 项目 除了我们分享公司新闻的博客。 通过自定义帖子类型,我们能够在我们的功能页面上对齐项目......所以如果您查看我们的 WordPress服务,我们从事的与 WordPress 相关的项目将自动显示。 我正在努力记录我们所有的项目,以便我们的网站访问者可以看到我们为公司所做的一系列工作。

合并帖子和自定义帖子类型

我们的主页已经相当广泛,所以我不想为我们的博客文章建立一个部分,为我们的最新项目建立一个部分。 我想使用我们的模板生成器将帖子和项目合并到相同的输出中, Elementor. Elementor 没有用于合并或组合帖子和自定义帖子类型的界面,但自己做这件事很简单!

在您的子主题的 functions.php 页面中,这是一个如何将两者结合起来的示例:

function add_query_news_projects( $query ) {
	if ( is_home() && $query->is_main_query() )
		$query->set( 'post_type', array( 'post', 'project' ) );
	return $query;
}
add_filter( 'pre_get_posts', 'add_query_news_projects' );

pre_get_posts 过滤器使您能够更新查询并将其设置为获取您的帖子和 项目 自定义帖子类型。 当然,当您编写代码时,您需要将自定义帖子类型更新为您的实际命名约定。

合并 Feed 中的帖子和自定义帖子类型

我还让网站通过它的提要自动发布到社交媒体……所以我也想使用相同的查询来设置 RSS 提要。 为此,我只需要添加一个 OR 语句并包含 is_feed.

function add_query_news_projects( $query ) {
	if ( is_home() && $query->is_main_query() || is_feed() )
		$query->set( 'post_type', array( 'post', 'project' ) );
	return $query;
}
add_filter( 'pre_get_posts', 'add_query_news_projects' );

在 Elementor 中合并帖子和自定义帖子类型

还有一个注意... Elementor 有一个非常棒的功能,您可以在其中命名和保存您的站点中的查询。 在这种情况下,我正在构建一个名为 news-projects 的查询,然后我可以从 Posts Query 部分的 Elementor 用户界面调用它。

function my_query_news_projects( $query ) {
	$query->set( 'post_type', array( 'post', 'project' ) );
}
add_action( 'elementor/query/news-projects', 'my_query_news_projects' );

这是它在 Elementor 用户界面中的外观:

elementor 帖子查询

披露:我正在使用我的 Elementor 本文中的会员链接。