使用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返回正常但会破坏页面的某些功能,并使用主站点的博客帖子填充“最近的帖子”小部件。
关于出了什么问题的任何想法?感谢。
答案 0 :(得分:2)
添加我的评论作为答案:
阅读OP代码注释,看起来永远不会调用restore_current_blog()
,因为在调用之前会返回HTML。
确保return
部分是那里的最后一行。