如何让Elementor Loop Grid同时调用多个Custom Post Types?
解决ACF Loop Grid同时调取多个自定义文章类型的方法
不需要额外插件,用ACF自带功能或自定义代码就能实现,以下是两种可行方案:
方案一:直接使用自定义查询(快速实现)
- 编辑你的Loop Grid模板,在「Source」下拉菜单中选择Custom Query(自定义查询)
- 在「Query Arguments」输入框中填入以下参数(替换成你的自定义文章类型slug):
array( 'post_type' => array('你的cpt1别名', '你的cpt2别名', '你的cpt3别名'), 'posts_per_page' => 12, // 可按需调整显示条数 'orderby' => 'date', 'order' => 'DESC' ) - 保存模板后,Loop Grid就会同时加载指定的所有自定义文章类型内容。
方案二:添加「所有自定义文章类型」选项到Source下拉(适合重复使用)
如果你需要频繁选择调取所有CPT,可以通过代码给Source菜单添加一个统一选项:
- 打开主题(或子主题)的
functions.php文件,添加以下代码:// 给ACF Loop的Source下拉添加「所有自定义文章类型」选项 add_filter('acf/location/rule_values/post_type', 'add_all_cpt_option'); function add_all_cpt_option($choices) { // 获取所有公开的非内置自定义文章类型 $custom_post_types = get_post_types(array( '_builtin' => false, 'public' => true ), 'names'); if (!empty($custom_post_types)) { $choices['all_custom_post_types'] = '所有自定义文章类型'; } return $choices; } // 匹配选项时修改查询参数,加载所有CPT add_filter('acf/loop/query', 'modify_loop_query_for_all_cpts'); function modify_loop_query_for_all_cpts($query) { if (isset($query['post_type']) && $query['post_type'] === 'all_custom_post_types') { $custom_post_types = get_post_types(array( '_builtin' => false, 'public' => true ), 'names'); $query['post_type'] = $custom_post_types; } return $query; } - 保存文件后,回到Loop Grid编辑界面,Source下拉菜单会出现「所有自定义文章类型」选项,选择即可自动加载所有你创建的自定义文章类型内容。
内容的提问来源于stack exchange,提问作者John Gosselin
相关产品推荐
相关产品推荐

