switch_to_blog() 在 WordPress 短代码中

switch_to_blog() within WordPress shortcode

使用 WordPress 多站点网络,我需要通过短代码从我们的主站点访问自定义 post 类型。

例如,我们的主站点 (ID 1) 是存储自定义 post 类型(案例研究)的地方。在 functions.php 我有以下内容:

//[casestudy]
add_shortcode( 'casestudy', 'casestudy_shortcode' );

function casestudy_shortcode( $atts ) {
    $a = shortcode_atts( array(
        'id' => ''
    ), $atts );

    switch_to_blog(1);

    //Get fields from custom post type with Advanced Custom Fields Pro
    //and return HTML output with them

    restore_current_blog();
}

然后使用 [casestudy id="123"] 调用短代码,其中 ID 是案例研究的 post ID。

问题是,这样做 returns 案例研究 HTML 很好,但会破坏页面的某些功能,并且还会用博客 'recent posts' 小部件填充 posts主站点的。

有什么问题吗?谢谢

添加我的评论作为答案:

阅读OP代码注释,似乎从未调用过restore_current_blog(),因为在调用它之前返回了HTML。

确保 return 部分是其中的最后一行。