Ответы пользователя по тегу WordPress
  • Как добавить css класс к продукту WooCommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Самый правильный вариант:

    <?php post_class( 'col-sm-6' ); ?>

    Ну хоть иногда читайте документацию и не занимайтесь ерундой.
    Ответ написан
  • Как получить содержимое постов в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Зачем это?
    $content = apply_filters('the_content', $content);
    2. Используйте:
    $args = array(
        // параметры
    );
    $schedule = new WP_Query( $args );
    if( $schedule->have_posts() ) :
        while( $schedule->have_posts() ) :
            $schedule->the_post();
            // здесь вывод уже как в обычном лупе - the_title(), the_content() и тд.
    endif;
    wp_reset_postdata();
    Ответ написан
  • Как изменять цвет из админки wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    https://codex.wordpress.org/Theme_Customization_API
    https://developer.wordpress.org/themes/advanced-to...

    А вообще, для начала скачайте тему _s на GitHub или через конфигуратор и изучите ее содержимое. Это отличный материал для обучения. Также, не помешает посмотреть стандартные темы, включая новую Twentysixteen (текущая свежая версия на GitHub).
    Ответ написан
    Комментировать
  • Как использовать функции woocommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Так же, как и функции WordPress. Разумеется, если под функциями вы имеете в виду template tags. Например:
    <?php woocommerce_login_form(); ?>
    Обратите внимание на разницу между вашим примером и моим. Имя функции, потом скобки, и обязательно точка с запятой. Почитайте про основы PHP, синтаксис. Функции WooCommerce (как и WP) - это обычные функции, написанные на языке PHP и должны соответствовать его синтаксису.

    ЗЫ: Обычно, если в имени функции есть слово get, это означает, что данная функция не выведет на страницу то, что вы ожидаете, а лишь вернет значение, которое можно далее использовать, например:
    <?php echo get_terms(); ?>
    Этот код принудительно отправит результат выполнения функции на вывод. Или же:
    <?php 
    $terms = get_terms(); // сохранили результат
    echo $terms; // выводим его или делаем что-то еще
    ?>
    Ответ написан
    Комментировать
  • Повлияет ли на скорость загрузки обновление Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Зависит какая версия стоит сейчас, какие плагины, какой серверный стек. В целом, WordPress будет летать шустрее на нормальном сервере при отсутствии кривых плагинов и тем. Да, сам код WP со временем разрастается, но также и оптимизируется.

    Что касается обновления в принципе - делать обязательно. Вообще, лучше всего работать на самой свежей версии. Исключение - прям вот только вышедшая версия. Можно недельку-другую подождать перед обновлением, вдруг какой-то баг всплывет (часто бывает). А еще лучше - иметь staging или хотя бы локальную копию сайта и тестировать ее с новой версией WP когда она еще в режиме Beta (обычно минимум за месяц до выхода релиза).
    Ответ написан
    Комментировать
  • Как секьюрно задать права на каталоги?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ответ на StackOverflow правильный.

    Для файлов нужны права 644, что означает:

    Владелец - чтение, запись
    Группа - чтение
    Все - чтение

    Для директорий 755, что означает:

    Владелец - чтение, запись, выполнение
    Группа - чтение, выполнение
    Все - чтение, выполнение.

    Дополнительный бит для директорий нужен, потому что без права на выполнение вы не сможете директорию открыть. Именно X позволяет открывать файлы внутри директории.
    Ответ написан
    Комментировать
  • Какую CMS выбрать для большого проекта?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Я, как проповедник WordPress, постараюсь быть максимально осторожен. WP - потянет. Если вам надо именно максимально быстро начать. Для мультиязычки в вашем контексте лучше всего Multisite, есть хороший платный плагин под это дело - не скупитесь, берите. Для полей и метаданных - Advanced Custom Fields 5 Pro. Также, платная версия, не скупитесь. Еще по ходу возникнет необходимость в других, более мелких плагинах. В целом, сделать можно.

    Но! Учитывая, что живем мы в реальном мире, где не все так гладко (и, как подсказывает опыт, обычно все очень-очень неровно), вангую необходимость многое допиливать / перепиливать под себя. Это все реально, и можно сделать качественно и под себя на WP, но объем работ будет немалый, сложность тоже на уровне. Соответственно, реальная стоимость разработки и дальнейшей поддержки выйдет весьма круглая. ИМХО, в таком случае лучше писать под себя на какой-нибудь Laravel. Либо, идеальный вариант, сначала собрать по-быстрому на WP и парочке платных плагинов, загрузить редакторов работой, собирать все замечания / правки / пожелания и тд. И параллельно писать с нуля свою платформу, учитывая параллельный реальный опыт.
    Ответ написан
    8 комментариев
  • Откуда сортировка в $wp_query или как её отключить?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Крил: боже упаси такой код использовать, у вас там sql-injection! Я уж молчу про опасный output. Это раз. Два - прямой коннект в БД и низкоуровневый sql-запрос внутри среды WP - полный кретинизм. Три - читайте про хуки. У WooCommerce (и у WP) масса полезных для таких задач событий и фильтров.

    Сделайте шаг назад, избавьтесь от этого дырявого говнокода. Поставьте четко задачу. Тогда можно будет сделать все правильно.

    ЗЫ: По приведенной вами ссылке код нормальный, а у вас получился кошмар.
    Ответ написан
  • Передача сайта на доработку в чужие руки - как не "попасть"?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Йолки ж палки. Никто в своем уме не дает доступ к production кому попало. Для таких задач есть системы контроля версий и staging. Если это суперсложно - фрилансеру даете дамп базы и копию сайта (или ссылку и права на Git-репу), он разворачивает у себя development-копию, делает правки, коммитит в Git / шлет вам архив / показывает на своем сервере. После утверждения работ переносите правки к себе.
    Ответ написан
    Комментировать
  • Комментарии к записях через соц. сети и сам Wordpress в одном потоке?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Используйте WordPress Social Login для авторизации через соцсети и родные комментарии WP.

    Задумка вставить виджеты соцсетей и потом собирать все комменты вперемешку - бредовая изначально. Хотя, в целом, реализуема - кроном дергаете соцсети и импортируете комменты к себе, фиксите по датам и сортировку свою делаете. Но, повторюсь, затея бредовая по своей сути.
    Ответ написан
    Комментировать
  • WP Google Map Lightbox при нажатии на ссылку?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Плагинов для карт много, +1 к ответу Данила (хотя это далеко не полный список). Если же какой-то из плагинов подходит по всем параметрам, но не открывается в "лайтбоксе" - вручную интегрируйте Magnific Popup, это лучший скрипт для попапов любого формата и типа.
    Ответ написан
    Комментировать
  • Данные из json в посты WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    WP REST API. В декабре 2015 выходит версия WordPress 4.4, в нее уже будет включена основа этого API, к апрелю 2016 (версия 4.5) будет полный перенос в ядро. Проект стабилен, можете смело использовать на продакшне.
    Ответ написан
    Комментировать
  • Почему не работает [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 какая? Какие ошибки появляются?
    Я когда-то делал стандартным способом, по документации. Вот тут работает без проблем (зарегайтесь быстро, и увидите форму).
    Ответ написан