web-dev-qa-db-ja.com

ユーザーのprofile.phpを無効にする方法は?

wordpress 4.2.2を使用しており、buddypressの最新バージョンを使用しています。すべてのユーザーがbuddypressのプロファイルページでプロファイルをカスタマイズするようにします。だから私はユーザーのprofile.phpを無効にしたい。プラグインをカスタマイズするWP管理UIによってダッシュボードからプロファイルリンクを非表示にします。ユーザーのprofile.phpを無効にします。これを行うにはどうすればよいですか?

5
akarim

profile.phpからダッシュボードにリダイレクト

これを行う1つの方法は次のとおりです。

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

現在のユーザーがオプションを管理できない場合は、代わりにダッシュボードにリダイレクトします。

profile.phpから現在のユーザーのメンバーページにリダイレクトします

メンバーのプロフィールページにリダイレクトしたい場合は、(未テストで)試すことができます。

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

bp_core_get_user_domain()関数は、 この答え 、数年前の@BooneGorgesで言及されています。

私はちょうどBP source をチェックしました、そしてこの機能はまだBP 2.3で利用可能です( here を見てください)。

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

そして

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

その場合はPHPを更新することを検討してください。

7
birgire

次のコード*は、管理者以外をフロントエンドのカスタムプロファイルページにリダイレクトします。無効にする代わりに、それらをカスタムページにリダイレクトする必要があるためです。 :)

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

}

* 出典^

2
Mayeenul Islam

私はこれが好きです。アミノページを配列に追加してリダイレクトすることができます。下のダッシュボードにリダイレクトしていますが、buddypressのurlにもリダイレクトできます... BPがあまり使用されていないため、そのURLが何であるかはわかりません。

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

単純なcssで追加のprofile.phpリンクを隠すこともできます。

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

上記はjqueryを使って、あるいはphpと出力バッファを使っても達成できます。

0
Bryan Willis