• Где лучше заводить блог так, чтобы легче было собрать аудиторию?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если с английским все ок - Medium.com
    Ответ написан
    Комментировать
  • Как при помощи ACF добавить условную логику к пунктам меню?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У вас вокер работает с каждым элементом по очереди, а сам элемент доступен в $item. Проверяйте еще его имя / слаг / ID. Получится 3 проверки:

    - нужный $item
    - пользователь авторизован
    - и только тогда смотрим значение поля
    Ответ написан
    Комментировать
  • Что делать, если нет портфолио для резюме, но есть опыт?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Портфолио такая штука интересная... Вот я с WP работаю 10+ лет, опыта вагонище. А показать тоже осбо нечего. Либо старье, которое может быть вполне норм само по себе, но уровень то у меня уже совершенно другой, не репрезентативно. Все свежее, крупное и вкусное - под NDA. Опенсорса немного есть, есть контрибюшены в экосистеме WP, но этого вроде как мало. Что делать? Для себя я выбрал несколько проектов под NDA, поговорил с клиентами и получил добро показывать их непублично, оговаривая эту особенность с новыми клиентами при показе. Это дает плюсы – во-первых, если клиент решить связаться с владельцем такого сайта и спросить референс, я буду уверен что бывший клиент не сделает круглые глаза, а подтвердит мое участие в проекте и даст нормальную рекоммендацию. Во-вторых, новому клиенту такое уважение к NDA и клиентским данным однозначно придется по душе, они такое любят. Особенно крупные, у которых и деньги есть на разработчиков с рейтом выше среднего. При найме та же кухня.
    Ответ написан
    Комментировать
  • Можно ли вместо шорткода «фильтровать» контент?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Первое - фильтровать контент можно, регулярками. А это медленно.
    Второе - шорткоды тоже работают на регулярках, внезапно.
    Третье - если вы собрались фильтровать именно [my_shortcode], то в чем профит? Или я что-то упускаю?
    Ответ написан
    Комментировать
  • Как вы храните изображения при разработке/сопровождении сайта?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В дополнение к советам уважаемых джентльменов выше еще как вариант – rewrite rules на уровне сервера, которые будут транслировать на локалке пути на прод, и грузить медиа-файлы оттуда.
    Ответ написан
    Комментировать
  • Как сделать редирект?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Директива rewrite может использоваться в блоке server, совсем необязательно (и даже не рекоммендуется) для каждого правила rewrite писать свой отдельный блок location. См. документацию.
    2. Если редиректов больше чем парочка штук, для удобства в блоке server подключите отдельный файл, класть его можно где угодно (я держу в самом проекте, это позволяет трекать все изменения в git):

    include /var/www/site-name/redirects.conf;

    3. А уже в этом файле пишите редиректы друг за другом, по одному в строчку:

    rewrite ^/page/qwe/?$ $schema://$server_name/page-qwe/ permanent;
    rewrite ^/qwe/?$ $schema://$server_name/qwe-qwe/ permanent;


    4. После каждого изменения конфига (в том числе подключенного конфига с редиректами) необходимо попросить Nginx перезагрузить конфиги (не обязательно, и даже не нужно перезагружать сам Nginx):

    sudo service nginx reload
    Ответ написан
    Комментировать
  • Как хранить таблицы в БД?

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

    |  id  |  json_data  |
    |------|-------------|
    |   1  |  ...        |

    По id всегда можно получить конкретную таблицу, хранить данные одной конкретной таблицы можно в json. Для редактирования этих данных вы все равно будете брать всю таблицу на вывод, поэтому перезаписывать json целиком вполне ок.

    Если use case более сложный – приводите больше деталей. Тогда и ответы будут более точными.
    Ответ написан
    Комментировать
  • В чём можно подготовить документацию перед разработкой проекта?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Попробуйте Confluence. В паре с Jira, BitBucket и другими инструментами от Atlassian – вообще яд. Но стоит немножко денег.

    Если кто-то подкинет достойную бесплатную альтернативу, сам буду благодарен.
    Ответ написан
    Комментировать
  • Как правильно вывести данные из БД Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Почитайте документацию, что ли... Ну или хотя бы открыли класс и посмотрели какие публичные методы у него есть.

    $wpdb->get_var() – это для получения одного конкретного значения.
    $wpdb->get_row() – для получения всей строки.
    $wpdb->get_results() – более общий, generic, для получения любых результатов.
    $wpdb->query() – вообще для выполнения любого запроса.
    Ответ написан
    6 комментариев
  • Как добавлять новые сайты используя vagrant, homestead, laravel, используя serve?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вы немножко перепутали. Команда serve нужна, если у вас нет локального сервера, только PHP (который вполне может работать сервером при необходимости). А Homestead – это виртуальная с полноценным Ubuntu и веб-сервером. Поэтому serve там запускать не надо, там и так Nginx крутится.

    А вот дальше начинается интересное :)

    Для того, чтобы Nginx смог обслуживать ваш домен, у него (Nginx) должен быть конфиг для него. А для этого надо добавить домен и путь в конфигурацию Homestead.yaml, после чего сделать homestead up --provision.

    Все это подробно описано в документации Homestead.
    Ответ написан
    6 комментариев
  • Как правильно разбить строку в данном случаи?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Не надо ничего разбивать, вы плагин ACF неправильно используете. Замените значения для селекта на:

    300 : Услуга один
    400 : Услуга два

    1. Обратите внимание на пробелы вокргу двоеточия
    2. Первым идет атрибут value, вторым – label (человекопонятный текст)

    Ну и на выводе работать надо с ассоциативным массивом:

    $type_service = get_field('type_service', 15);
    foreach ( $type_service as $key => $value ) {
        echo "<option value=\"{$key}\">{$value}</option>"; // <option value="300">Услуга один</option>
    }
    Ответ написан
    7 комментариев
  • Лучший вариант для моей задачи: CMS или Framework?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Фреймворк, без вариантов.
    Ответ написан
    Комментировать
  • Как правильно настроить LiveTemplate в PhpStrom?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    По первому вопросу:
    5aa7e2240043d350399155.jpeg

    По второму – не уверен что понял. Но поковыряйтесь в выпадающем списке "Expression", думаю там есть то что вам надо.
    Ответ написан
    Комментировать
  • Возможно ли создать шаблон файловой структуры в PhpStorm?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Запилить эту основу, сделать гит-репозиторием, а потом New Project - From Git Repository?
    Если PHP, можно и composer package запилить.
    Можно в CLI запилить скрипт для создания, запускать его из PhpStorm.

    Так, мысли вслух. У меня все WP-проекты бутстрапятся компоузером.
    Ответ написан
    Комментировать
  • Правильное использование заметок/сниппетов в phpStorm?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Я использую отдельное приложение SnippetsLab (под другие ОС думаю есть аналоги). С PhpStorm не интегрируется напрямую, но это и не нужно – приложение висит как menubar app, по хоткею открывается мини-окно поиска/добавления, кликом копируется. Бонус – интегрируется с Gist.

    То, что используется прям очень часто перегоняю в Live Templates.
    Ответ написан
    Комментировать
  • Как изменить вывод полного пути в phpstorm?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    По второму вопросу – File -> Rename Project. Имя будет отображаться как в Project View, так и в стартовом списке проектов.
    По первому – хз, самого бесит :)
    Ответ написан
    Комментировать
  • Как правильно прописать путь к файлу в wp_mail?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    WP_CONTENT_DIR возвращает путь в файловой системе. Сомневаюсь, что вам он нужен. Скорее нужен WP_CONTENT_URL.
    Ответ написан
    Комментировать
  • Почему теряются "красивые ссылки" для запланированных записей?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Николай, Никак. И это не странное решение, так и должно быть. Подозреваю, вы не совсем правильно используете эту функцию. Future date, он же scheduled post, это еще неопубликованная запись, а значит у нее еще нет URL, и она недоступна пользователям, не отображается на сайте. То есть, по умолчанию не должна отображаться на сайте, не для этого она сделана. Она будет опубликована при наступлении нужной даты, вот тогда у нее и публичный URL появится. В вашем случае вы пытаетесь "перехитрить систему", принудительно запрашивая еще не опубликованные записи.

    Рискну предположить, что вы хотите сделать какое-то подобие анонсов будущих материалов, например такое бывает с ивентами. В этом случае задача решается другим путем – создаете для записей custom field с необходимой датой, и оперируете значениями этого поля. С помощью подзапроса WP_Meta_Query получаете "старые записи" у которых мета-поле <= текущей даты, и "будущие записи", у которых значение >= текущей даты. Везде где дата у вас (по умолчанию – дата публикации) меняете ее на данные из мета-поля. В этом случае все записи – и старые, и "будущие" будут иметь статус publish, публичный URL и все такое. Но выводить вы их можете так, как вашей душе заблагорассудится.
    Ответ написан
  • На мой сайт заходят другие сайты - это как?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Там поставили на вас ссылку, возможно в виде oEmbed.
    Ответ написан
    Комментировать
  • Почему выводятся не все данные поста?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Попробуйте в начале функции добавить global $post; (или перед началом foreach).
    Ответ написан
    2 комментария