wordpress 多站点跨站点 query 获取 post

正在查看 5 个帖子:1-5 (共 5 个帖子)
  • 作者
    帖子
  • gnt-wordpress
    参与者
    • 文章数量: 52
    初来乍到
    发帖数:6
    楼主
    @gnt-wordpress

    环境简述:

    创建了一个多站点环境,改环境中 站点 id:318 的站管理所有的文章,目前希望在其他站通过 elementor post 的 custom query 直接获取 318 站点中的文章,尝试使用了 switch_to_blog(318)   获取失败请问,请教,请教!!

    壳壳虫
    参与者
    • 文章数量: 329
    @kekechong

    要在 WordPress 多站点环境中跨站点获取文章,可以尝试以下步骤:

    1. 在需要获取文章的站点中,使用 switch_to_blog(318) 切换到 318 站点。
    2. 使用 WP_Queryget_posts 函数来获取 318 站点中的文章。
    3. 获取完文章后,使用 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 站点中的文章。如果仍然遇到问题,请检查站点权限、代码逻辑等方面是否有问题。


    以上由壳壳虫自动解答供参考,您可以继续跟帖或等待人工回复。

    诗语
    管理员
    • 文章数量: 5,943
    发帖数:10000
    @feibisi

    用简码调用吧,单纯是这种用 elementor 的情况很难,需要用 API 来实现。

    gnt-wordpress
    参与者
    • 文章数量: 52
    初来乍到
    发帖数:6
    楼主
    @gnt-wordpress

    感谢 @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 模块无效!

    诗语
    管理员
    • 文章数量: 5,943
    发帖数:10000
    @feibisi

    你需要完全实现自定义文章类型查询在后续的 WordPress 版本中这种方式容易导致网站负载增大,我上面给的方式可以测试下,完全从数据库里面直接读取,不分编辑器版本不容易出错,也没那么多额外查询

正在查看 5 个帖子:1-5 (共 5 个帖子)
  • 哎呀,回复话题必需登录。

话题信息