J'ai un multisite. Dans le site A, un utilisateur est connecté en tant qu'auteur auteur .
Sur le site B, l'utilisateur est toujours connecté sans rôle, mais il ne peut pas télécharger le fichier dans un formulaire frontal (créé dans ACF).
J'ai besoin que cet utilisateur soit uniquement connecté au site A, puisse télécharger le fichier sous cette forme frontale dans le site B. J'ai essayé avec deux solutions:
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');
}
et
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');
}
Regardez dans switch_to_blog()
et son suivi requis, restore_current_blog()
J'ai laissé des commentaires dans le code pour que l'idée de base s'adapte à votre fonction.
Cela peut nécessiter des ajustements et peut probablement être amélioré.
//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()