• Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв, приветствую ещё раз, нужна помощь)
    Я поставил плагин для социалок, лог/рег,лайки. Всё работает, и кастомный от Пиппина и плагин социалок, но при входе, реге через стандартую форму, логини, всё делает, но вылетает ошибка. Мучился, но потом "дорос" до define( 'WP_DEBUG', true ); Кардинально меняют ситуацию :D

    В итоге, как оказалось в туториале Пиппина, были устаревшие функции:
    wp_setcookie
    get_userdatabylogin


    Я их поменял, переписал, и в блоге у него запостил, для других, так как его статья до сих пор актуальна, комменты от 2019 года есть.

    Но осталась одна ошибка, я не знаю как её разобрать:

    Error

    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



    Я запостил на форуме плагина - https://wordpress.org/support/topic/conflict-with-...

    Я перевожу и понимаю как: Неисправимая ошибка, и что мало аргументов, не хватает

    У меня вызывается так:
    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);

  • Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв, а какой это плагин проверенный для этого? Буду его юзать)) Я думал комильфо писать самому, чем использовать плагины :D Я бы не мучился так, хотя всё равно не зря - вас и много инфы нашёл)
  • Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв, а вы спишитесь с html-academy, они постоянно даже учеников-выпускников к себе забирают в команду, я там html узнал, я о них узнал, когда они только запустились,
    они на хабре написали о себе, я от туда узнал о них.

    Купил подписку и начал узнавать HTML, CSS. Ну, честно говоря, сча всё пилят под видео-курсы/вебинары/интенсивы. HTML/CSS самый обширный и толковый, хотя в конце главы, где нужно методом тыка делать задания (те, кто начинает) - это борода.

    Тот же JS, мне понравилось изложение материалы, задачки, но там всё поверхностно. Я начал читать всеми известный learn js от Ильи Кантора, домучал его, хоть он и старый) И вот недавно они перевели свой учебник английской версии, теперь русский learn JS актуален на 2019 год и будет постоянно обновляться, на днях на почту пришло оповещение, что уже закончили перевод. Так что через неделю начну перечитывать уже новую версию)) Потом PHP начну)

    Отошел от темы про HTML Academy, на днях заходил к ним на сайт, так как дайджесты раз в месяц на почту от них приходит, я увидел, что у них появился учебник по PHP - https://github.com/htmlacademy/intensive-php-guide
    И начали интерактивные курсы писать по PHP. WP самая популярная CMS. Насколько я знаю, даже курсы (уроки-скрипты) можно писать за ЗП, они только рады, так как не успевают. А по CMS - вы будете первым там, они CMS вообще не разбирают) Занимайте нишу)

    Я приобрел курс Исламова по скидке по WP + Woocomerce, на ютуб смотрел западных блогеров курсы, и русских, я смотрю видео давно в x2, поэтому всё быстро и многое успеваю просмотреть, но что-то все пропускают раздел, где нужно кастомизировать Вход, регу, профиль :D Я не понимал почему, теперь знаю :)
  • Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв, Спасибо, добавил всё в закладки)
    Осталось только страницу профиля запилить, но после выше указанных вами примеров, уже могу понять, где код написан не абы как)

    А вы не проводите ни каких конференций или не принимали участий по WP?
    Я с WP 4 дня, но уже нормально полазил, погуглил, и не понимаю почему за 16 лет, не появился в СНГ, кто писал бы толковый материал по WP, да и даже на западной стороне, как оказывается за 16 лет - мало. Я когда гуглил, Пиппина не нашел :(
    У нас русскоязычных блогеров/разработчиков, которые пишут про WP, кроме wp-kama, нет?

    Вам с вашим багажом на udemy надобно, я был бы первым учеником :)
  • Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв, очень-очень круто. Спасибо! А где вы всю эту информацию черпали? Дайте ещё ссылки для развития WP. PHP не надо, это я сам найду, когда начну учить :D

    Уже стереотип ровняться только на зарубежные источники. Я гуглил, и не мало, если я нашел такую "дичь" на зарубежных, то в СНГ пространстве я вообще ничего не нагуглил, кроме wp-kama.

    Хорошо, что такие как вы есть) Заметил, что земляк, я в Вольногорске пару лет жил)

    Вчерашний материал я прочитал, реализовал регу. C ajax для формы через JS, вывод ошибок не работает, остальное делает, регает, ну то такое, когда PHP изучу - буду понимать почему :D

    Атрибуты data-error, да, я хотел просто туда записывать ошибки, а через JS подставлять текст ошибки (со своими стилями) в value для соответствующего инпута.
  • Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв, наверное, написано на отъ*бись) На зарубежных сайтах - подобный код был.
    Спасибо за ссылки, сча почитаю.
  • Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв,

    wp-kama, как? Читать и пологаться можно на данный ресурс или тоже чревато его читать?
    Читая его, на примере функций/кода от туда:
    function.php

    /**
     * Вход пользователя
     */
    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();
    	} 
    }



    HTML

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



    Мой header

    <!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>



    Всё работает. Мне нужно делать редирект при успехе, и выводить ошибки в произвольном месте в моей разметке (html).
    Как обрабатывать результат (ошибка/успех) этого кода?


    Неужели так сложно написать, рассказать? о_о
  • Кастомные вход и регистрация на сайт WordPress. Как обработать условие «is_wp_error»?

    @avprinciple Автор вопроса
    Игорь Воротнёв, js я знаю, код PHP из туториала, меня интересует только как проверять условия
    $user_verify = wp_signon( $login_data, false ); 
    
      if ( is_wp_error($user_verify) )

    Чтобы можно было обрабатывать ошибки, и работал редирект, потому что из разметки с эти переменные "$user_verify" - я не могу обрабатывать, так как и из разметки я их не вижу. Моя проблема в том, что get_header, должен быть выше кода php, а так логинирование не работает, и по документации wp_signon должен быть выше какого-либо вывода html, когда я опускаю get_header, всё работает, кроме if ( is_wp_error($user_verify) )

    Бросьте это дело, честно.
    Дельное решение вопроса, однако)
    Удачи
  • Как загрузить изображение из админки в карусель на wordpress?

    @avprinciple
    Николай Миронов, встала задача сделать свою форму входа/регистрации/профиля на WP, вы можете тыкнуть/указать, где почитать туториалы, можно зарубежные, любые)
    Только без ajax, JQuery.
    Формы я сделал, js для них написал, там данные отправляются через fetch, мне главное указать action какой надо, и php код, которые должен все данные из формы обрабатывать и отправлять.
  • Как загрузить изображение из админки в карусель на wordpress?

    @avprinciple
    Интересовал такой же вопрос, как у автора. Ваш комментарий топчик, ещё бы альт прописывать как-то можно было бы) Я-то в разметке добавил alt для картинок, но он одинаковый, использовал ещё с переменной из цикла, чтобы хотя бы по нумерации различались.

    Ещё расписали хорошо, подробно всё, особенно код. Как раз для новичков, спасибо!
  • Как вывести пагинацию на custom post type?

    @avprinciple Автор вопроса
    Dima Polos, нет, дядь.
    Короче, гуглив, я выяснил, что get_posts не работает, нужно менять WP_Query, я нашел тут сей код:
    Paginating a CPT.

    <?php
    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
    $args = array(
         'post_type' => 'custom_post_type_name',
         'posts_per_page' => 10,
         'paged' => $paged
    );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
         //CPT. content
    endwhile;
    ?>
    <nav class="pagination">
         <?php
         $big = 999999999;
         echo paginate_links( array(
              'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
              'format' => '?paged=%#%',
              'current' => max( 1, get_query_var('paged') ),
              'total' => $loop->max_num_pages,
              'prev_text' => '&laquo;',
              'next_text' => '&raquo;'
         ) );
    ?>
    </nav>
    <?php wp_reset_postdata(); ?>



    Я от слова совсем не силён в PHP, не знаю как тут в циклах закрываются скобки, в этом коде при выводе html - разметки - ошибка.
    Сопаставив и чуток переписав цикл с wp-kama, у меня всё получилось, навигация вывелась, всё огонь.
    Этот код рабочик, просто цикл переписать надо, или что-то, чего я не знаю в этом коде с примера)

    Мой переписанный код:
    spoiler

    <?php
              $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
                $args = array(
                  'posts_per_page' => 6,
                  'order'          => 'ASC',
                  'post_type'      => 'my_type_post',
                  'paged'          => $paged
                );
                $loop = new WP_Query( $args );
              ?>
              <?php
                if( $loop->have_posts() ) {
                  while( $loop->have_posts() ){
                    $loop->the_post();
                    ?>
                    <h3><?php the_title(); ?></h3>
                    // My HTML
                    <?php
                  }
                  wp_reset_postdata();
                } 
             ?>
    
    // И в нужно контейнере - месте размещаем nav.
    <code lang="php">
           <nav class="pagination">
              <?php
                $big = 999999999;
                echo paginate_links( array(
                  'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
                  'format' => '?paged=%#%',
                  'current' => max( 1, get_query_var('paged') ),
                  'total' => $loop->max_num_pages,
                  'prev_text' => '&laquo;',
                  'next_text' => '&raquo;'
                ) );
              ?>
            </nav>
    </code>

  • Как вывести пагинацию на custom post type?

    @avprinciple Автор вопроса
    Dima Polos, ничего не меняется, записей начало выводить меньше, но пагинация не появляется, в инспекторе вообще ничего нет, кроме моего кода, никакого кода связано с пагинацией нет.
  • Как вывести пагинацию на custom post type?

    @avprinciple Автор вопроса
    В настройках поставил 3 записи, всего записей сделал 12.
    И как мне думается, проблема в том, что я зарегестрировал кастомную запись - свою, а эта функция - the_post_pagination(). выводит пагинацию на дефолтной странице записей.

    Весь код страницы

    <?php get_header('want') ?>
    <main class="page-want__main">
        <div class="container page-want__container">
          <div class="projects">
    
            <div class="projects__search">
              <div class="projects__form">
                <form class="form form-search" action="/" method="GET">
                  <label class="form__label form-search__label">
                    Поиск
                    <input type="search" class="form__input form-search__input" name="search" placeholder="Я ищу...">
                    <span class="form__filter form-search__filter">
          <span class="form-search__filter-button">фильтр</span>
                    </span>
                  </label>
                </form>
              </div>
              <a class="button projects__button" href="<?php echo home_url(); ?>/add-project">Добавить свой проект</a>
            </div>
    
            <div class="projects__items">
              <div class="projects__items-list">
                <?php 
                  $posts = get_posts( array(
                    'numberposts' => 6,
                    'order'       => 'ASC',
                    'post_type'   => 'post-want',
                  ) );
    
                  foreach( $posts as $post ){
                    setup_postdata($post);
                ?>
                    <a class="projects__item projects__item--mini" href="<?php the_permalink(); ?>">
                    <picture class="projects__item-image">
                      <?php the_post_thumbnail('post-project'); ?>
                    </picture>
                    <div class="projects__item-info">
                      <h5 class="projects__item-title"><?php the_title(); ?></h5>
                      <div class="projects__item-text">
                        <?php the_excerpt() ?>
                      </div>
                    </div>
                  </a>
                <?php
                }
                  wp_reset_postdata();
                ?>
              </div>
            </div>
            <?php the_post_pagination(); ?>
          </div>
        </div>
      </main>
      <?php get_footer('want'); ?>

  • Атрибут "form" у тега fieldset, почему не связывается?

    @avprinciple Автор вопроса
    У fieldset проблемы ещё и с flex-ом, короче, можно забыть о нём)
  • Как в Gulp указать путь к любой папке?

    @avprinciple Автор вопроса
    .pipe(rename({
        dirname: "/",
      }))
      .pipe(dest('dist/img'));


    Работает, но если внутри папки img, есть другие папки, например icons src/img/icons, то она не подхватится, исходная папка будет img, а не img/icons
  • Как в Gulp указать путь к любой папке?

    @avprinciple Автор вопроса
    Сергей delphinpro, уже делал, так оно вообще ничего не подхватывает.
  • Как правильно оформлять class по ООП?

    @avprinciple Автор вопроса
    Куда и как правильно обработчики определять?
  • Ошибка при вызове класса. Uncaught TypeError: (intermediate value) is not a function?

    @avprinciple Автор вопроса
    Да-да, я вообще никаких методов не создал) Невнимательный) Спасибо)
  • Верстка по BEM. Файловая структура. Как присваивать классы независимому блоку?

    @avprinciple Автор вопроса
    2 вариант - это то, что нужно, но {"className": "header__logo"}) это не работает :(
  • Не приходит сообщение на почту с PHP формы. VestaCP?

    @avprinciple Автор вопроса
    Есть ссылка на хороший туториал на поднятие сервера с настройкой серверной почты?

    Настраивал сервер по туториал у, но ни где не говорилось и настройке почтового сервера, ну или настройке шаблона о котором выше упомянули.