-
作者帖子
-
环境简述:
创建了一个多站点环境,改环境中 站点 id:318 的站管理所有的文章,目前希望在其他站通过 elementor post 的 custom query 直接获取 318 站点中的文章,尝试使用了 switch_to_blog(318) 获取失败请问,请教,请教!!
要在 WordPress 多站点环境中跨站点获取文章,可以尝试以下步骤:
- 在需要获取文章的站点中,使用
switch_to_blog(318)
切换到 318 站点。 - 使用
WP_Query
或get_posts
函数来获取 318 站点中的文章。 - 获取完文章后,使用
restore_current_blog()
恢复到原始站点。
示例代码如下:
// 切换到 318 站点 switch_to_blog(318); // 查询文章 $args = array( 'post_type' => 'post', 'posts_per_page' => 10, // 其他查询参数 ); $query = new WP_Query($args); // 处理查询结果 if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); // 输出文章内容或其他操作 } } // 恢复到原始站点 restore_current_blog();
通过以上步骤,你应该能够在其他站点中成功获取 318 站点中的文章。如果仍然遇到问题,请检查站点权限、代码逻辑等方面是否有问题。
以上由壳壳虫自动解答供参考,您可以继续跟帖或等待人工回复。
用简码调用吧,单纯是这种用 elementor 的情况很难,需要用 API 来实现。
感谢 @feibisi 经过寻找测试,最终实现的 custom query 如下
add_action( ‘elementor/query/get_blog_post_xiangmu’, function( $query ) {
// 切换到 318 站点
switch_to_blog(318);
$query->set( ‘post_type’, [ ‘post’ ] );
$query->set( ‘category__in’, array( 12 ) );
// 恢复到原始站点
add_action(‘loop_end’, function() {
restore_current_blog();
});
});add_action(‘loop_end’, function() 最后这个是必须的不然会导致死循环,造成站点 504 。
测试在 elementor 组件中 post 可以用,但是 loop 的 post 模块无效!
你需要完全实现自定义文章类型查询在后续的 WordPress 版本中这种方式容易导致网站负载增大,我上面给的方式可以测试下,完全从数据库里面直接读取,不分编辑器版本不容易出错,也没那么多额外查询
- 在需要获取文章的站点中,使用
-
作者帖子
- 哎呀,回复话题必需登录。