web-dev-qa-db-de.com

Wie deaktiviere ich profile.php für Benutzer?

Ich benutze WordPress 4.2.2 und ich verwende BuddyPress neueste Version. Ich möchte, dass alle meine Benutzer ihr Profil auf der Profilseite von buddypress anpassen. Also möchte ich profile.php für die Benutzer deaktivieren. Ich verstecke den Profil-Link vom Dashboard durch das WP Admin-UI-Anpassungs-Plugin. Aber wenn jemand url mysite/wp-admin/profile.php eingibt, wird er im Browser angezeigt. Also möchte ich dem Problem entkommen und wollen profile.php für die Benutzer zu deaktivieren. Was soll ich tun, um das zu tun?

5
azizul

Leiten Sie von profile.php zum Dashboard um

Hier ist eine Möglichkeit, dies zu tun:

add_action( 'load-profile.php', function() {
    if( ! current_user_can( 'manage_options' ) )
        exit( wp_safe_redirect( admin_url() ) );
} );

hier werden wir stattdessen zum Dashboard umgeleitet, wenn der aktuelle Benutzer keine Optionen verwalten kann.

Weiterleiten von profile.php zur Mitgliedsseite des aktuellen Benutzers

Wenn Sie zur Profilseite des Mitglieds weiterleiten möchten, können Sie Folgendes versuchen (ungetestet):

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() ) ) );
} );

Die Funktion bp_core_get_user_domain() wird in dieser Antwort vor einigen Jahren von @BooneGorges erwähnt.

Ich habe gerade den BP überprüft source und diese Funktion ist in BP 2.3 immer noch verfügbar (siehe hier ).

Für PHP <5.3

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() ) );
}

und

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() ) ) );
}

sie sollten jedoch in Betracht ziehen, Ihr PHP zu aktualisieren, wenn dies der Fall ist.

7
birgire

Mit dem folgenden Code * werden Benutzer ohne Administratorrechte auf eine benutzerdefinierte Profilseite im Front-End umgeleitet, da Sie sie nicht deaktivieren, sondern auf Ihre benutzerdefinierte Seite umleiten müssen. :)

<?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();
        }

}

* Quelle ^

2
Mayeenul Islam

Ich mag dieses. Sie können dem Array Amin-Seiten hinzufügen, um sie umzuleiten. Ich habe eine Weiterleitung zum Dashboard unten, aber Sie können auch zur Buddypress-URL weiterleiten ... Ich bin mir nur nicht sicher, wie diese URL lautet, da ich BP nicht sehr oft verwende.

   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');

Sie können auch zusätzliche profile.php-Links mit einfachen CSS verstecken:

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);

Das obige könnte auch mit jquery oder mit PHP und dem Ausgabepuffer erreicht werden.

0
Bryan Willis