wordpress 4.2.2を使用しており、buddypressの最新バージョンを使用しています。すべてのユーザーがbuddypressのプロファイルページでプロファイルをカスタマイズするようにします。だから私はユーザーのprofile.phpを無効にしたい。プラグインをカスタマイズするWP管理UIによってダッシュボードからプロファイルリンクを非表示にします。ユーザーのprofile.phpを無効にします。これを行うにはどうすればよいですか?
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 を見てください)。
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を更新することを検討してください。
次のコード*は、管理者以外をフロントエンドのカスタムプロファイルページにリダイレクトします。無効にする代わりに、それらをカスタムページにリダイレクトする必要があるためです。 :)
<?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();
}
}
* 出典^
私はこれが好きです。アミノページを配列に追加してリダイレクトすることができます。下のダッシュボードにリダイレクトしていますが、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と出力バッファを使っても達成できます。