• Почему не работает [code] в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А откуда взялся шорткод [code]? Что-то я не вижу его в списке стандартных шорткодов. Используйте
    <code>...</code>
    в режиме Text, естественно (не WYSIWYG). Ну а если нужен полноценный вывод кода, да еще с подсветкой синтаксиса - смотрите плагины. Их много, на все фломастеры.
    Ответ написан
    Комментировать
  • Не отображается меню в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В последнее время все вопросы очень нечетко сформулированы. Отпуска сказываются?))

    1. Не работает создание меню, его наполнение / редактирование или назначение меню в область?
    2. Не работает в Customizer, на странице редактирования меню, или на странице редактирования меню во вкладке назначения меню в области?

    А еще, неплохо бы полистать поддержку этой темы, хз что там у них запилено.
    Ответ написан
    4 комментария
  • ACF for archive page?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вопрос немного расплывчато поставлен.
    Дополнительные поля постов вывести в постах на странице архива? get_field(), the_field(), как обычно.
    Или - добавить дополнительные поля только для самой страницы архива?

    UPDATE (из комментов):

    Вам следует понять как вообще работают Custom Fields. Поля и их значения хранятся в базе данных в таблице wp_postmeta. Они привязаны внешним ключом в post_ID, то есть поле / поля привязаны к конкретному посту (любого типа - пост, страница, custom post type). Привязать абстрактно к странице архива не позволяет архитектура, то есть, Custom Fields не подходят для этой задачи.

    Зато подходят другие решения. Самое простое и очевидное - таблица wp_options. Туда можно сохранять любые ключи с любыми значениями, которые не имеют явной привязки к какому-либо объекту (посту, странице, etc). Для работы с опциями есть функции add_option(), get_option(), update_option(), delete_option().

    Если же речь идет только об архивах таксономий (рубрик, меток, custom taxonomies), то можете посмотреть в сторону termmeta. Это полный аналог wp_postmeta, который позволяет добавлять кастомные поля для терминов таксономий (не всей таксономии, а для конкретных терминов, то есть, конкретных рубрик или меток). В данный момент это не является стандартной таблицей, но в версии 4.4. (декабрь 2015), максимум 4.5 (апрель 2016) этот функционал уже будет добавлен в ядро. А пока можно воспользоваться плагином для этого - https://wordpress.org/plugins/wp-term-meta/

    Что касается ACF для этих задач. Если у вас бесплатная версия, то этого функционала нет. Если у вас Pro версия, то в ней есть такая штука как Option pages - возможность создавать свои страницы настроек и наполнять нужными полями. Вот эта фича как раз и позволяет создать страничку настроек, добавть в нее поля с привязкой к архивам и создать нужные настройки и поля, чтобы решить вашу задачу. Но, повторюсь, это только в ACF 5 Pro (в 4й весрии это отдельный модуль для страниц опций, но нет смысла сейчас покупать лицензию на 4ю версию).
    Ответ написан
  • Где найти такие слайдеры на WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Для слайдеров и каруселей есть:

    Owl Carousel (см. демку stagePadding)
    Slick (см. демку Center Mode)
    Royal Slider ($14)

    Возьмите и изучите один из этих скриптов. Остальное - и рядом не стояло.
    Ответ написан
    Комментировать
  • С какой почты лучше делать рассылку?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Используйте специализированные сервисы - MailChimp (рассылки), Mandrill (транзакционные), Amazon SES тд. Настраивайте их корректно на свой имейл, имейл должен быть доменный. То есть, если у вас сайт mycoolsite.ru, то письма должны быть от newsletter@mycoolsite.ru (часть до @ на ваше усмотрение, но лучше что-то близкое по смыслу, или no-reply@). Для этого нужно корректно настроить DKIM и SPF. Вот так это работает, не попадает в спам, не блокируется почтовыми серверами и клиентами, имеет очень высокий показатель доставки писем etc. А слать пачками рассылки через обычный SMTP - это плохая практика.
    Ответ написан
    Комментировать
  • Как настроить масштабирование миниатюры записей в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ну у тебя кроп по высоте 300px, если картинка больше 300 - она будет обрезана, если меньше - будет свободное пространство сбоку. Это абсолютно логично поведение. Заливай картинки минимум раза в 2 больше. Для вертикальных картинок лучше всего привязку кропа делать к ширине, тогда все будет нормально ложиться в сетку по колонкам, а уж высота - сколько получится (в настройках - высота = 0).
    Ответ написан
    Комментировать
  • Связка плагина Advanced Custom Fields Pro и WP User Frontend Pro или как вывести поля ACF во фронтэнд?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Начните сначала. Чистый WordPress, потом Advanced Custom Fields (5ю версию берите), потом создаете нужную группу полей, потом выводите ее в виде формы на фронтенде с помощью родный функций ACF.

    Я делал это, все работает. Поэтому, вероятнее всего, проблема на вашей стороне. Давайт идти пошагово и смотреть где что не работает.

    UPDATE (из комментариев): Что касается самой формы:

    1. Создаете кастомный шаблон, его нужно будет использовать для страницы на которой должна быть форма (шаблон в админке в редактировании страницы выбирается справа).
    2. В самом шаблоне, сверху шапка файла такая:
    <?php
    /*
    Template Name: ACF Form
    */
    acf_form_head();
    get_header();
    ?>

    3. Далее в шаблоне, где нужно вывести форму, вставляете:
    $args = array(
        'post_id' => 'new_post',
        'new_post' => array(
            'post_type' => 'YOUR_POST_TYPE',
            'post_status' => 'draft',
        ),
        'post_title' => true,
        'submit_value' => 'Создать',
        'updated_message' => 'Ваша запись поставлена в очередь на модерацию',
        'label_placement' => 'left',
    );
    acf_form( $args );

    4. Все.

    Что касается верстки - форма будет выводиться в верстке и стиле ACF, но можно отключить их CSS и запилить свой.
    Ответ написан
    6 комментариев
  • Как вывести Advanced Custom Fields форму на отдельную страницу (frontend)?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А версия ACF какая? Какие ошибки появляются?
    Я когда-то делал стандартным способом, по документации. Вот тут работает без проблем (зарегайтесь быстро, и увидите форму).
    Ответ написан
  • Как отредактировать пост не через админку wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ответ написан
    Комментировать
  • Package control в Sublime Text 3 не запускается по ctrl+shift+p?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Установите пакет Find Key Conflicts и проверьте нет ли конфликтов.
    Если что, все шорткаты - в файле Key Bindings - Default. Переназначить принудительно можно в файле Key Bindings - User. Оба файла доступны из меню Preferences.
    Ответ написан
  • Как хранить данные о страницах сайта в БД?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А остальная архитектура у вас какая? В самом простом случае я бы хранил в 2х таблицах - в одной основной контент и основные флаги и свойства, в другой - метаданные. Title как правило соответствует названию страницы (заголовку), поэтому это будет в основной таблице, как и контент. Метаданные (ключевые слова и тд) - в отдельной таблице. Связка - по ID страницы.
    Ответ написан
    8 комментариев
  • Какой посоветуете шаблон для 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 (и поддерживает кажется его синтаксис).
    Ответ написан
    1 комментарий
  • Почему не работает конструкция с кастомным полем в профиле?

    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 или на гитхабе ищите), это отличный учебный материал. И уже после этого берите ответственность за коммерческий проект.
    Ответ написан
    Комментировать