在Switch_to_Blog之后需要RESTORE_CURRENT_BLOG,如果我在函数中使用它?

时间:2019-01-23 作者:Galgóczi Levente

class Basics {
    public function build_frontend_post_form( $blog_object ) {
        switch_to_blog( $blog_object->blog_id );
        if( !( current_user_can( \'administrator\' ) and current_user_can( \'publish_posts\' ) ) ) { restore_current_blog(); return false; }
        restore_current_blog();
        #DO STUFF
    }
}
在排除中(无论如何,如果我的逻辑没有必要的话),我需要使用它restore\\u current\\u blog,或者足够返回false?那么在这种情况下,基本博客是否会在功能完成后恢复?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

switch_to_blog 更改全局变量的值(如下所示:https://core.trac.wordpress.org/browser/tags/5.0.3/src/wp-includes/ms-blogs.php#L801). 无论您是否在函数中调用它,这些变量都会更改。

所以是的,你总是要打电话restore_current_blog 当你用切换后的博客完成了你想要的一切。

否则,这些变量将保持不变(因此wpdb 将查询错误的表等)

相关推荐

WordPress(在HAProxy和Jetty之后),而不是MultiSite,在子文件夹中-并且/en/wp-admin/保持重定向到/wp-admin/

我正在使用一种不同寻常的设置在CentOS 8 Linux上托管3个Wordpress安装。在前面我有HAProxy(卸载TLS),然后我有Jetty configured for FastCGI php fpm和Wordpress。我正在使用Wordpress编写一个用Pixi编写的文字游戏。js。几年来,我一直在使用3个不同的IP地址和3个不同的域名作为我游戏的3种语言版本:en、de、ru。然而,我的文字游戏并不成功,因此我决定放弃额外的域名和IP地址,只使用文件夹为我的游戏服务:wordsbyfa