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
部分是其中的最后一行。
使用 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
部分是其中的最后一行。