wordPress短代码中的switch_to_blog()

时间:2017-03-07 15:19:45

标签: php wordpress custom-post-type shortcode multisite

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

例如,我们的主网站(ID 1)是存储自定义帖子类型(案例研究)的地方。在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是案例研究的帖子ID。

问题是,这样做会使案例研究HTML返回正常但会破坏页面的某些功能,并使用主站点的博客帖子填充“最近的帖子”小部件。

关于出了什么问题的任何想法?感谢。

1 个答案:

答案 0 :(得分:2)

添加我的评论作为答案:

阅读OP代码注释,看起来永远不会调用restore_current_blog(),因为在调用之前会返回HTML。

确保return部分是那里的最后一行。