Intereting Posts

Как отключить profile.php для пользователей?

Я использую wordpress 4.2.2, и я использую последнюю версию buddypress. Я хочу, чтобы все мои пользователи настраивали свой профиль на странице профиля buddypress. Поэтому я хочу отключить profile.php для пользователей. Я скрываю ссылку профиля с панели управления с помощью WP admin UI настраивает плагин. Но когда кто-то печатает url mysite / wp-admin / profile.php, он появляется в браузере. Поэтому я хочу избавиться от проблемы и хочу отключить profile.php для пользователей. Что я должен сделать, чтобы сделать это?

Solutions Collecting From Web of "Как отключить profile.php для пользователей?"

Перенаправить из profile.php на панель инструментов

Вот один из способов сделать это:

 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, и эта функция все еще доступна в BP 2.3 (см. Здесь ).

Для 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, если это так.

Следующий код * перенаправляет не-админ на страницу настраиваемого профиля в интерфейсе, потому что вместо отключения вы должны перенаправить их на свою страницу. 🙂

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

* Источник ^

Мне нравится этот. Вы можете добавить аминные страницы в массив, чтобы перенаправить их. Я перенаправляю его на панель управления ниже, но вы также можете перенаправить URL-адрес buddypress … Я просто не уверен, что это за URL, так как я не часто использую 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'); 

Вы также можете скрыть любые дополнительные ссылки profile.php с простым 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); 

Вышеупомянутое также может быть достигнуто с помощью jquery или с использованием php и выходного буфера.