允许站点A上的作者能够在多站点中上载站点B上的文件

时间:2017-07-12 作者:Andrea A

我有一个多站点。在站点A中,用户登录为author.

在站点B中,用户仍然没有角色登录,但他无法以前端表单(由ACF制作)上载文件。

我只需要登录站点A的用户,就可以在站点B的前端表单中上载文件。我尝试了两种解决方案:

if ( is_user_logged_in() )
 add_action(\'admin_init\', \'allow_contributor_uploads\');

function allow_contributor_uploads() {
 $user_id = get_current_user_id();
 $user_id->add_cap( \'upload_files\');

}
以及

if ( is_user_logged_in() )
   add_action(\'admin_init\', \'allow_uploads\');
function allow_uploads() {
   global $current_user;
   $current_user = get_current_user_id();
   $current_user->add_cap( \'upload_files\');
}

1 个回复
最合适的回答,由SO网友:hwl 整理而成

调查switch_to_blog() 以及所需的后续行动,restore_current_blog()

我在代码中留下了注释,以使基本思想适应您的功能。

它可能需要调整,并且可能会得到改进。

//Site B
add_action( \'init\', \'site_a_author_upload_site_b\' );

function site_a_author_upload_site_b() {
    if ( is_user_logged_in() ) {
       //get a WP_User object of current user
       $current_user = wp_get_current_user();

       //ID of Site A
       $site_a = 1;

       //Switch to Site A
       switch_to_blog( $site_a );

       //get current user\'s roles on Site A
       $get_role = $current_user->roles;

       //Check if logged in user is an author on Site A
       if ( in_array( \'author\', $get_role ) ) {

           //if yes, let\'s 1) restore current blog (Site B)
           restore_current_blog();

           //and 2) Add the cap we want to add to Wp_User object
           $current_user->add_cap( \'upload_files\' );
       }

       else {

        //be sure we have restored current blog
        restore_current_blog();
      }
   }//end if logged in


}//end site_a_author_upload_site_b()

结束

相关推荐

Multisite switch to blog

在我开始这个问题之前,我很抱歉,因为我在本地工作,所以我没有任何代码可以显示。我有一个Wordpress多站点,有3个站点-“site-1”、“site-2”、“site-3”。它们都导入相同的导航部分。php”,从模板文件夹。导航是硬编码的,但动态地从“site-2”中为site-2按钮提取内容在导航部分的开头。php“我获取当前博客id,然后切换到“site-2”。 $the_blog_id = get_current_blog_id(); switch_to_blog(2);&