WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Front-End Login Enter

Добрый день.
Был код

require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
$log = isset($_POST['log']) ? $_POST['log'] : '';
$pwd = isset($_POST['pwd']) ? $_POST['pwd'] : '';
$rememberme = isset($_POST['rememberme']) ? $_POST['rememberme'] : '';
if($rememberme) { $rbme = true; } else { $rbme = false; }
$creds = array();
$creds['user_login'] = $log;
$creds['user_password'] = $pwd;
$creds['remember'] = $rbme;
$user = wp_signon( $creds, false );
if ( !is_wp_error($user) ) {
header('location:' . home_url('/')); exit;
} else {
header('location:' . home_url('/recovery/?auth=bad')); exit;
}

И код в function

if (!current_user_can('administrator')):
  show_admin_bar(false);
endif;
function true_wp_admin_block() {
	if (!current_user_can('administrator')) {
		header('location:' . get_home_url() );
		exit();
	}   

add_action('admin_menu', 'true_wp_admin_block');
function wph_noadmin() {
	if (is_admin() && !current_user_can('administrator')) {
		wp_redirect(home_url());
		exit;
	} }
add_action('init', 'wph_noadmin');

Данный код не авторизовывал Администратора так как надо..
На фронте панель админа была, но в админку не пускала (перенаправляла на главную)

Причина была в том что функция wp_set_auth_cookie( $user_id ) не была присвоена при входе, соответственно вход в админ часть был не доступен или с неполными правами

Код я дополнил

require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
$log = isset($_POST['log']) ? $_POST['log'] : '';
$pwd = isset($_POST['pwd']) ? $_POST['pwd'] : '';
$rememberme = isset($_POST['rememberme']) ? $_POST['rememberme'] : '';
if($rememberme)
{
	$rbme = true;
}
else
{
	$rbme = false;
}
$creds = array();
$creds['user_login'] = $log;
$creds['user_password'] = $pwd;
$creds['remember'] = $rbme;
$user = wp_signon( $creds, false );
if ( !is_wp_error($user) )
{
	if( strpos($log,'@') !== false )
	{
		$user_by = get_user_by( 'email', $log );
	}
	else
	{
		$user_by = get_user_by( 'login', $log );
	}
	$user_id = $user_by->ID;
	wp_set_auth_cookie( $user_id );
	header('location:' . home_url('/'));
	exit;
}
else
{
	header('location:' . home_url('/recovery/?auth=bad')); exit;
}

Код работает. Версия WP 4.9.13.
Подскажите пожалуйста безопасность такого кода при входе
Или лучше ограничить только первым $user_id ?
То есть дополнить

    if($user_id === 1)
	{
		wp_set_auth_cookie( $user_id );
	}
0
eLDeR
4 месяца назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация