J'utilise wordpress 4.2.2 et j'utilise la dernière version de buddypress. Je souhaite que tous mes utilisateurs personnalisent leur profil sur la page de profil de buddypress. Donc, je veux désactiver profile.php pour les utilisateurs. Je cache le lien de profil dans le tableau de bord avec l'interface utilisateur WP admin. Personnalisez le plugin. désactiver profile.php pour les utilisateurs. Que dois-je faire pour faire ça?
profile.php
vers le tableau de bordVoici une façon de le faire:
add_action( 'load-profile.php', function() {
if( ! current_user_can( 'manage_options' ) )
exit( wp_safe_redirect( admin_url() ) );
} );
où nous redirigeons vers le tableau de bord à la place, si l'utilisateur actuel ne peut pas gérer les options.
profile.php
vers la page de membre de l'utilisateur actuelSi vous souhaitez rediriger vers la page de profil du membre, vous pouvez essayer (non testé):
add_action( 'load-profile.php', function() {
if( ! current_user_can( 'manage_options' ) && function_exists( 'bp_core_get_user_domain' ) )
exit( wp_safe_redirect( bp_core_get_user_domain( get_current_user_id() ) ) );
} );
La fonction bp_core_get_user_domain()
est mentionnée dans cette réponse par @BooneGorges il y a quelques années.
Je viens de vérifier BP source et cette fonction est toujours disponible dans BP 2.3 (voir ici ).
add_action( 'load-profile.php', 'wpse_195353_profile_redirect_to_dashboard' );
function wpse_195353_profile_redirect_to_dashboard()
{
if( ! current_user_can( 'manage_options' ) )
exit( wp_safe_redirect( admin_url() ) );
}
et
add_action( 'load-profile.php', 'wpse_195353_profile_redirect_to_member_page' );
function wpse_195353_profile_redirect_to_member_page()
{
if( ! current_user_can( 'manage_options' ) && function_exists( 'bp_core_get_user_domain' ) )
exit( wp_safe_redirect( bp_core_get_user_domain( get_current_user_id() ) ) );
}
mais vous devriez envisager de mettre à jour votre PHP si c'est le cas.
Le code suivant * redirigera les administrateurs non-administrateurs vers une page de profil personnalisée dans l'interface frontale, car au lieu de le désactiver, vous devez les rediriger vers votre page personnalisée. :)
<?php
add_action ('init' , 'wpse_redirect_profile_access');
function wpse_redirect_profile_access(){
//admin won't be affected
if (current_user_can('manage_options')) return '';
//if we're at admin profile.php page
if (strpos ($_SERVER ['REQUEST_URI'] , 'wp-admin/profile.php' )) {
wp_redirect ( home_url( '/my-profile' )); // to page like: example.com/my-profile/
exit();
}
}
* Source ^
J'aime celui la. Vous pouvez ajouter plusieurs pages au tableau pour les rediriger. Je l'ai redirigé vers le tableau de bord ci-dessous, mais vous pouvez également rediriger vers l'URL de buddypress ... Je ne suis pas sûr de savoir quelle est cette URL puisque je n'utilise pas très souvent BP.
function no_proflie_admin_pages_redirect() {
global $pagenow;
if(!current_user_can('manage_options')) {
$admin_redirects = array(
'profile.php'
);
if(in_array($pagenow, $admin_redirects)){
wp_redirect( admin_url('/') ); exit;
}
}
}
add_action('admin_init', 'no_proflie_admin_pages_redirect');
Vous pouvez également masquer tout lien profile.php supplémentaire avec un simple css:
function hide_any_profile_links() { ?>
<style type="text/css">
a[href="http://disputebills.com/wp-admin/profile.php"], a[href="profile.php"]{
display: none!important;
}
</style>
<?php }
add_action('admin_head', 'hide_any_profile_links', 999);
Ce qui précède pourrait également être réalisé avec jquery ou en utilisant php et le tampon de sortie.