Задать вопрос
Ответы пользователя по тегу WordPress
  • Какой посоветуете шаблон для WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Не шаблон, а тема. Шаблон - это один php-файл темы
    2. themeforest.net/search?utf8=%E2%9C%93&term=wordpre...
    Ответ написан
    1 комментарий
  • Какой надежный и удобный плагин мультиязычности для WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Бесплатные:

    Polylang (у него есть WPML Compatibility, работает со всем, что запилили под WPML)
    qTranslate X
    WPGlobus, www.wpglobus.com
    MultilingualPress

    У всех разный подход, а именно:

    Polylang / WPML - переводы это самостоятельные записи, связаны между собой скрытой таксономией "язык". Неудобство - нельзя использовать один и тот же slug для разных языков.

    qTranslate X - переводы хранятся в одной и той же записи с помощью спецразметки. Неудобство - при выключении плагина и/или переходе на другой, придется чистить весь контент от спецразметки. В некоторые плагины сложно добавить поддержку qTranslate X.

    MultilingualPress - мультисайты, каждый сайт сети - это языковая версия. Контент перелинкован между собой. Удобно, если сайт большой и над каждой версией работает отдельный человек / команда, если контент не зеркальный.

    WPGlobus - относительно новый плагин, но выглядит интересно, отзывы хорошие. Работает по принципу qTranslate X (и поддерживает кажется его синтаксис).
    Ответ написан
    Комментировать
  • Почему не работает конструкция с кастомным полем в профиле?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Не надо экранировать двойные кавычки бекслешем внутри двойных кавычек. Используйте одинарные кавычки (а внутри - уже двойные).
    2. get_user_meta(), если не найдет ключ в БД, возвращает пустую строку (если указан третий аргумент true), или пустой массив. Никак не Null. Тем более, если делать сравнение на Null, то нужно делать $var === NULL.
    3. Получение $usermeta и проверку этого ключа надо запихнуть в notice_wmr().

    Не тестировал, но что-то вроде этого:

    add_action( 'admin_notices', 'notice_wmr' );
    
    function notice_wmr() {
    
        $user_idd = get_current_user_id();
        $key1 = 'wmr';
        $usermeta = get_user_meta( $user_idd, $key1, true );
    
        if( empty( $usermeta ) ) {
    
            $class = 'updated';
            $message = 'Ваш WMR кошелек не задан! Задайте его <a href="http://root1.ru/wp-admin/profile.php#wmr">здесь</a>';
            echo '<div style="position: relative;" class="' . $class . '">
                <p>' . $message . '</p>
                <button type="button" class="notice-dismiss wmr">
                    <span class="screen-reader-text">Скрыть это уведомление.</span>
                </button>
            </div>'; 
    
        }
    
    }
    Ответ написан
    Комментировать
  • Постоянные ссылки с помощью rewrite_rule. Голова уже сломана. Как?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Подобные rewrire rules - штука достаточно непростая, ибо, как вы заметили, документация и уроки по этой теме практически отсутствуют. Я года два назад для одной SaaS-платформы на базе WP делал подобную штуку с городами. В итоге сделал, но убил не одну ночь на это, моск почти сломал. Сейчас со старта не вспомню детали, но логика плюс-минус такова:

    1. add_rewrite_tag - создать теги-шаблоны %city% и тд
    2. зарегистрировать новые переменные для query через фильтр query_vars
    3. создать rewrite_rules

    Самое главное - регулярки, которые будут ваши rewrite tags (1) парсить в переменные query (2). То есть, результирующая строка в итоге будет типа index.php?post_type=XXX&taxonomy1=YYY&taxonomy1_term=ZZZ&taxonomy2=WWW&taxonomy2_term=UUU

    Да и вообще, для начала сделайте п.2 и добейтесь чтобы у вас все работало с "некрасивыми урл", а уж потом - займитесь ЧПУ. Потому как с rewrite rules чаще всего беда как раз в том, что query vars неправильные.

    Ну и потом еще сами урлы ссылок (пермалинки) надо будет в нужном формате строить. Там свои хуки, но это уже не сложно.

    В общем, приготовьтесь к большому объему отладки, запаситесь кофе Query Monitor и Rewrite Rules Inspector в помощь.

    Если настойчиво исследовать результаты гугла после 3й страницы, пробовать разные ключевые фразы, то должно найтись 2-3 урока, более-менее глубоких. 2 штуки точно было на каком-то сайте кажется со словом Shiba в названии. Я пороюсь на досуге в архивах, может найду.
    Ответ написан
  • Обязательно ли знать php для верстки сайтов на joomla\word press\ drupal?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Простой ответ - да.
    Сложный ответ:

    Есть имплементаторы, есть разработчики. И те, и другие делают сайты. Первые собирают лего путем утановки и настройки цмс, двух десятков плагинов, максимум - копипаста простого кода из интернетов. Вторые на базе цмс решают любые задачи, ровно так, как надо. Разница огромная - и по деньгам, и по срокам, и по качеству. Но и то, и другое - вариант. По сути, это просто разные лиги. Региональный любительский чемпионат против олимпиады или чемпионата мира. Как-то так. Поэтому, если вам в имплементаторы, то достаточно основ пхп, которых нахватаетесь в процессе. Если в разработчики - ближайший год вам придется плотно учиться.
    Ответ написан
    Комментировать
  • Как сделать автоматическую смену ролей пользователя в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Когда вам приходит возврат из Робокассы на ваш коллбек-урл, на init или другом подходящем хуке вешайте свою функцию, которая и будет менять роль. Как работать с ролями, кратко:
    $user = new WP_User( $id );
    $user->add_role( $role_name ); // добавить юзеру роль, текущая роль (роли) не меняется
    $user->remove_role( $role_name ); // удалить одну роль
    $user->set_role( $role_name ); // заменить все роли на одну новую

    Подробнее тут и в документации.
    Ответ написан
    Комментировать
  • Как часто разработчикам сайтов wordpress приходится писать свои модули?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Плагинов и решений для WP - масса. Родной репо, гитхаб, CodeCanyon, гугл в конце концов.
    2. Но далеко не все эти плагины написаны хорошо и качественно, и уж тем более далеко не все из них легко модифицировать под свои задачи (в идеале - так, чтобы оригинал можно было обновлять спокойно, а кастомные надстройки не слетали при этом).
    3. Исходя из п.2, писать свое приходится, достаточно часто. А если учесть, что многие плагины вроде как и делают что надо, но при этом написаны криво, наполнены рекламой Про-фишек и тд, то проще сразу свое написать и не париться.

    Хинт: подавляющее число плагинов - GPL. Поэтому форкаете, берете оттуда нужный код, остальное випиливаете, дописываете / модифицируете под свои задачи. На то оно и Open Source.
    Ответ написан
    Комментировать
  • Стоит ли брать заказ по wordpress если знаешь только front-end и php?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Сначала запилите одну темку (желательно что-то отличное от блога) с кастомными фичами в качестве самообучения. Используйте за основу _s (Underscores.me или на гитхабе ищите), это отличный учебный материал. И уже после этого берите ответственность за коммерческий проект.
    Ответ написан
    Комментировать
  • Быстрый поиск для WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если совсем быстрый, да и база большая - https://www.elastic.co/
    А если обычный поиск, но удобный, с фильтрами - то есть много решений в родном репо и на CodeCanyon, да и свое написать не сложно. Но, вообще, стандартный поиск работает быстро. Если у вас тупит - сначала надо смотреть почему. Сервер, настройки etc
    Ответ написан
    Комментировать
  • Как лучше писать код плагина на wordpress процедурным или ООП?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Рекоммендуется / best practice - ООП. Какие паттерны юзать - дело ваше. Синглтоны - весьма спорный подход, одни оторваться от него не могут, других тошнит.

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

    И в любом случае, если плагин подразумевает удобные методы вывода контента / результатов его работы в шаблоны, то стоит писать свои template tags для удобства конечных пользователей - хорошая практика. Им существенно проще использовать привычный формат, например, кастомная функция my_get_post_views(), которая выводит количество просмотров поста, вместо вызова метода класса. Сама функция, в свою очередь, является только оберткой для этого вызова, но простым пользователям так понятнее и удобнее.
    Ответ написан
    Комментировать
  • Есть ли какие-нибудь профилировщики под wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Time Stack
    Query Monitor
    P3 (Plugin Performance Profiler)
    Developer (и куча расширений к нему)
    Debug Bar

    ну и, конечно же, никто не отменял XDebug.
    Ответ написан
    Комментировать
  • Какую cms выбрать для сайта каталога с 2к страниц? выбираю между ModX Re и Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ту, которую знаете хорошо изнутри. Ну или ваш разработчик знает. Обе системы справятся прекрасно, вопрос только в ровности рук.
    Ответ написан
    Комментировать
  • Почему не работает пагинация в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Функция wp_corenavi() не является родной функцией WordPress. Откуда она взялась и что она делает?

    У вас custom post type, вы flush_rewrite_rules() делали? Зайдите на страницу настроек постоянных ссылок, это обновит их.

    Установите плагин для отладки, например Query Monitor. Смотрите какой запрос прошел, какие query_vars. Какие ошибки есть (и есть ли вообще).
    Ответ написан
    3 комментария
  • Как реализовать добавление "компании" WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ничего не понятно. Куда добавлять компанию? Это только название компании? Где оно должно выводиться? Должны ли по нему фильтроваться / сортироваться любые данные?

    Что такое "блоговая структура" и что такое "мультиблоговость", как они между собой связаны в данном контексте, и в чем, собсттвенно проблема?

    Напишите подробнее, особенно цели свои, что хотите получить на выходе.
    Ответ написан
  • Как подключить скрипты в footer в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Все верно написал Иван, только это справедливо для всего, кроме нескольких встроенных скриптов. В том числе и jQuery, о котором речь. С ним там все заметно сложнее - сначала надо его deregister, потом register снова, но уже в подвал. Но, как написал Алексей Курилкин , трогать его не стоит.

    jQuery должен быть в шапке, а Google PageSpeed - тот еще параноик. Не стоить заморачиваться с этим ради циферок выше 96. А если у вас меньше - то об этом вообще еще очень рано беспокоиться, займитесь более важным.
    Ответ написан
    2 комментария
  • Как заставить работать Contact Form 7 и Easy FancyBox?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Пожалуй, я таки напишу подробно.

    1. Добавить в wp-config.php (если еще не добавлено):
    define('WP_DEBUG', 			true);
    define('WP_DEBUG_LOG', 		true);
    define('WP_DEBUG_DISPLAY', 	true);
    define('SCRIPT_DEBUG', 		true);
    define('SAVEQUERIES', 		true);

    2. Установить плагин Query Monitor
    3. Октрыть в браузере консоль
    4. Загрузить страницу с формой, открыть попап, засабмитить форму
    5. Внимательно мониторить консоль браузера на предмет ошибок, вывод плагина Query Monitor в верхней админпанели сайта (ошибки - красное, ворнинги и нотисы - коричневое), а также смотреть debug.log в папке wp-content

    И только после этого задавать вопрос, если он еще будет актуален.

    Потому что в связке CSS, JS, PHP нескольких плагинов, да еще и коммуникация аяксом между js и php очень много чего может пойти не так. И без какой-либо отладочной информации решить проблему, и тем более решить ее удаленно - крайне сложно.
    Ответ написан
    5 комментариев