/**
* Вход пользователя
*/
function user_login() {
if($_POST) {
$login_data = array(
'user_login' => $_POST['username'],
'user_password' => $_POST['password'],
'remember' => true,
);
$user_verify = wp_signon( $login_data, false );
if ( is_wp_error($user_verify) ) {
return '<span class="mine">Invlaid Login Details</span>';
} else {
wp_redirect( home_url() );
exit();
}
}
}
/**
* Регистрация нового пользователя
*/
function new_user_registration() {
// Данные переданные в $_POST
$userdata = array(
'user_login' => $_POST['user_name'],
'user_pass' => $_POST['password'],
'user_email' => $_POST['mail'],
'first_name' => $_POST['full_name'],
);
/**
* Проверять/очищать передаваемые поля не обязательно,
* WP сделает это сам.
*/
$user_id = wp_insert_user( $userdata ) ;
// возврат
if( ! is_wp_error( $user_id ) ) {
$mail = $userdata['mail'];
$from = get_option('admin_email');
$headers = 'From: '.$from . "\r\n";
wp_mail( $mail, '$subject', '$message', $headers ); // Тут я хотел отправить на почту данные новорега
wp_redirect( home_url() ); // Тут хотел сделать редирект; Не работает :)
return true;
} else {
return $user_id->get_error_message();
}
}
$user_verify = wp_signon( $login_data, false );
if ( is_wp_error($user_verify) )
if ( is_wp_error($user_verify) )
Бросьте это дело, честно.Дельное решение вопроса, однако)
код PHP из туториала,
потому что из разметки с эти переменные "$user_verify" - я не могу обрабатывать
Моя проблема в том, что get_header, должен быть выше кода php, а так логинирование не работает,
по документации wp_signon должен быть выше какого-либо вывода html
когда я опускаю get_header, всё работает,
Дельное решение вопроса, однако)
/**
* Вход пользователя
*/
function user_login() {
if($_POST) {
$login_data = array(
'user_login' => $_POST['username'],
'user_password' => $_POST['password'],
'remember' => true,
);
$user_verify = wp_signon( $login_data, false );
if ( is_wp_error($user_verify) ) {
return '<span class="mine">Invlaid Login Details</span>';
} else {
wp_redirect( home_url() );
exit();
}
}
}
/**
* Регистрация нового пользователя
*/
function new_user_registration() {
// Данные переданные в $_POST
$userdata = array(
'user_login' => $_POST['user_name'],
'user_pass' => $_POST['password'],
'user_email' => $_POST['mail'],
'first_name' => $_POST['full_name'],
);
/**
* Проверять/очищать передаваемые поля не обязательно,
* WP сделает это сам.
*/
$user_id = wp_insert_user( $userdata ) ;
if( ! is_wp_error( $user_id ) ) {
return true;
} else {
return $user_id->get_error_message();
}
}
<?php user_login(); ?>
<?php get_header('login'); ?>
<main class="page-login__main">
<div class="container page-login__container">
<form class="form form--post form-login" action="" method="POST">
<fieldset class="form__fieldset">
<legend class="form__legend form-login__legend">Вход</legend>
<label class="form__label form-login__label">
Логин
<input type="text" name="username" class="form__input" data-error="" placeholder="Alex" required>
</label>
<label class="form__label form-login__label">
Пароль
<input type="password" name="password" class="form__input" data-error="" placeholder="*****" required>
</label>
<p class="form-login__hint">Забыли пароль?
<a class="form-login__hint-link" href="<?php echo wp_lostpassword_url( ); ?>">Восстановить!</a>
</p>
<div class="form__footer form-login__footer">
<button class="form__button form-login__button" name="signup" type="submit">Вход</button>
<label class="form__check form__anti-spam">
<input class="form__check-input form__anti-spam-checkbox" type="checkbox" name="no-robot" required>
<span class="form__check-box"></span>
Я не робот
</label>
</div>
</fieldset>
</form>
</div>
</main>
<?php get_footer('login'); ?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<?php wp_head(); ?>
</head>
<body class="page-login">
<header class="header">
<div class="header__container container">
<div class="header__logo">
<div class="logo">
<a class="logo__link" href="<?php echo home_url(); ?>">
<img class="logo__image" src="<?php echo get_template_directory_uri(); ?>/assets/img/logo.svg" width="70" height="75">
</a>
</div>
</div>
<div class="header__breadcrumbs">
<nav class="breadcrumbs">
<?php
echo strip_tags(
wp_nav_menu([
'theme_location' => 'breadcrumbs_login_menu',
'container' => false,
'echo' => false,
'items_wrap' => '%3$s',
'depth' => 0,
]), '<a>' );
?>
</nav>
</div>
<div class="header__user">
<div class="user user--logged-out">
<a class="user__photo" href="<?php echo home_url(); ?>/profile">
<img class="user__photo-image" src="<?php echo get_template_directory_uri(); ?>/assets/img/user-photo.svg" width="37" height="37" alt="Фото пользователя">
</a>
<div class="user__logged user__logged--out">
<a class="user__login" href="<?php echo home_url(); ?>/login">Вход</a>
<a class="user__registration" href="<?php echo home_url(); ?>/registration">Регистрация</a>
</div>
<div class="user__logged user__logged--in">
<p class="user__name">John Fedor</p>
<p class="user__status">Пользователь</p>
<span class="user__button"></span>
</div>
<ul class="user__menu">
<li class="user__menu-item">
<a class="user__menu-link" href="<?php echo home_url(); ?>/profile">Настройки</a>
</li>
<li class="user__menu-item user__menu-item--status">
<img class="user__menu-icon user__menu-icon--status" src="<?php echo get_template_directory_uri(); ?>/assets/img/icon-settings.svg" alt="Статус">
<a class="user__menu-link" href="<?php echo home_url(); ?>/get-status">Получить статус</a>
</li>
<li class="user__menu-item user__menu-item--exit">
<a class="user__menu-link" href="<?php echo wp_logout_url( home_url() ); ?>">Выход</a>
<img class="user__menu-icon user__menu-icon--exit" src="<?php echo get_template_directory_uri(); ?>/assets/img/icon-exit.svg" alt="Выход">
</li>
</ul>
</div>
</div>
</div>
</header>
Неужели так сложно написать, рассказать? о_о
а почему дичь? Всё работает же. Или не безопасно? Или так писать моветон?
<?php echo home_url(); ?>/login
используйте <?php echo home_url('login'); ?>
А где вы всю эту информацию черпали?
Дайте ещё ссылки для развития WP.
Уже стереотип ровняться только на зарубежные источники. Я гуглил, и не мало, если я нашел такую "дичь" на зарубежных, то в СНГ пространстве я вообще ничего не нагуглил.
Вчерашний материал я прочитал, реализовал регу. C ajax для формы через JS, вывод ошибок не работает, остальное делает, регает, ну то такое, когда PHP изучу - буду понимать почему :D
wp_send_json_success($data); die;
/ wp_send_json_error($data); die;
, где $data будет JSON-объектом, содержащим ошибки или положительный результат (например id или даже все данные только что зарегистрированного пользователя). А что дальше делать с JSON на фронте и как вывести в форме я думаю вы уже знаете. Вот тут вам и пригодятся data-атрибуты. А вы не проводите ни каких конференций или не принимали участий по WP?
не понимаю почему за 16 лет, не появился в СНГ, кто писал бы толковый материал по WP,
даже на западной стороне, как оказывается за 16 лет - мало. Я когда гуглил, Пиппина не нашел :(
У нас русскоязычных блогеров/разработчиков, которые пишут про WP, кроме wp-kama, нет?
Вам с вашим багажом на udemy надобно, я был бы первым учеником :)
все пропускают раздел, где нужно кастомизировать Вход, регу, профиль :D Я не понимал почему, теперь знаю :)
define( 'WP_DEBUG', true );
Кардинально меняют ситуацию :Dwp_setcookie
get_userdatabylogin
Fatal error: Uncaught ArgumentCountError: Too few arguments to function mo_openid_link_account(), 1 passed in /Applications/MAMP/htdocs/wordpress.dev/wp-includes/class-wp-hook.php on line 286 and exactly 2 expected in /Applications/MAMP/htdocs/wordpress.dev/wp-content/plugins/miniorange-login-openid/class-mo-openid-login-widget.php:2346 Stack trace: #0 /Applications/MAMP/htdocs/wordpress.dev/wp-includes/class-wp-hook.php(286): mo_openid_link_account('truefalse') #1 /Applications/MAMP/htdocs/wordpress.dev/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #2 /Applications/MAMP/htdocs/wordpress.dev/wp-includes/plugin.php(465): WP_Hook->do_action(Array) #3 /Applications/MAMP/htdocs/wordpress.dev/wp-content/themes/scorp/functions.php(562): do_action('wp_login', 'truefalse') #4 /Applications/MAMP/htdocs/wordpress.dev/wp-includes/class-wp-hook.php(286): custom_login_member('') #5 /Applications/MAMP/htdocs/wordpress.dev/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters(NULL, Array) #6 /Applications/MA in /Applications/MAMP/htdocs/wordpress.dev/wp-content/plugins/miniorange-login-openid/class-mo-openid-login-widget.php on line 2346
do_action('wp_login', $_POST['user_name']);
function mo_openid_link_account( $username, $user ){
if($user){
$userid = $user->ID;
}
mo_openid_start_session();
$user_email = isset($_SESSION['user_email']) ? sanitize_text_field($_SESSION['user_email']):'';
$social_app_identifier = isset($_SESSION['social_user_id']) ? sanitize_text_field($_SESSION['social_user_id']):'';
$social_app_name = isset($_SESSION['social_app_name']) ? sanitize_text_field($_SESSION['social_app_name']):'';
//if user is coming through default wordpress login, do not proceed further and return
if(isset($userid) && empty($social_app_identifier) && empty($social_app_name) ) {
return;
}
elseif(!isset($userid)){
return;
//wp_die('No user is returned.');
}
global $wpdb;
$db_prefix = $wpdb->prefix;
$linked_email_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_email = \"%s\" AND linked_social_app = \"%s\"",$user_email,$social_app_name));
// if a user with given email and social app name doesn't already exist in the mo_openid_linked_user table
if(!isset($linked_email_id)){
mo_openid_insert_query($social_app_name,$user_email,$userid,$social_app_identifier);
}
}
add_action( 'wp_login', 'mo_openid_link_account', 9, 2);
mo_openid_link_account
add_action( 'wp_login', 'mo_openid_link_account', 9, 2);
do_action('wp_login', $_POST['user_name']);
Fatal error: Uncaught ArgumentCountError: Too few arguments to function mo_openid_link_account(), 1 passed
mo_openid_link_account( $username, $user )
add_action( 'wp_login', 'mo_openid_link_account', 9, 2);
do_action( 'wp_login', sanitize_user($_POST['user_name']), $user );
do_action('wp_login', $_POST['user_name']);
add_action( 'wp_login', 'mo_openid_link_account', 9, 2);
do_action('wp_login', $_POST['user_name'], 9, 2);
add_action( 'wp_login', 'mo_openid_link_account', 9, 2);
add_action( 'wp_login', 'mo_openid_link_account', 9, 2);
do_action(string $tag, $arg = '')
do_action('wp_login', $username, $user = 9);