• Как заставить шорткод Wordpress не игнорировать место вставки?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    $content = '';
    
    foreach ( $world_table as $item ) {      
        $content .= " {$item->subject} - {$item->conf} ";     
    }
    
    return $content;
    Ответ написан
    Комментировать
  • Где хранить конфиг сервера при разработке бэкенда?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Храните где удобнее, здесь нет каких-то жестких ограничений. Конфиг конкретного проекта может лежать в папке проекта, в вашем домашнем каталоге, в /etc/nginx/conf.d или /etc/nginx/sites-available - где вам больше нравится. И это абсолютно нормально подключать их из основного конфига - собственно, стандартная конфигурация по умолчанию именно это и делает - подключает все конфиги из папки conf.d.

    Единственный момент - старайтесь не держать конфиг nginx в корневой папке веб-сайта, чтобы он не был доступен через веб. Ну или хотя бы доступ к нему закройте в том же самом конфиге.
    Ответ написан
    Комментировать
  • Насколько стабилен Upwork в данное время, и стоит ли вливаться туда как разработчик Wordpress\PHP?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    +1 к ответу Илья С и несколько дополнительных моментов от WordPress-разработчика с пометкой top-rated:

    стоит ли вливаться туда как разработчик Wordpress\PHP

    Работы по этим направлениям очень много. Прям очень. На любой кошелек и уровень. Только пишите WordPress :)

    и заработать свою копейку на масло с хлебом

    На Upwork нельзя работать на полшышечки. Ну, технически можно, но выхлоп будет так себе. Чтобы хорошо и стабильно зарабатывать на Upwork нужно сделать это full-time работой. И сначала ты работаешь на профайл, а потом профайл работает на тебя.

    Впрочем, "минимум 5-7 свободных часов в сутках" вполне может хватать. Но сразу учитывайте, что не все из этих часов будут реально billable - часть времени будет уходить на организационную работу, мониторинг, биды, начальную переписку, изучение необходимого для решения задачи и тд. Условно при 5 часах в день, оплачиваемыми дай бог чтобы 3 было. А на первых порах и того меньше.

    Насколько сложен старт для новичка(в фрилансе) на Upwork? Какую обычно ставку ставят "начинающие" на фрилансе разработчики, нужно ли пытаться демпинговать что бы найти клиента


    Самое сложное - взять первые заказы. Несколько очень важных моментов:

    - определите свою ставку, основываясь на реальных знаниях / опыте / возможности решать конкретные задачи (и помните, что по мере роста вы ставку можете поднимать)
    - не демпингуйте и не ввязывайтесь в бессмысленную гонку за клиентов-нищебродов
    - пропишите себе понятия "идеальный клиент" и "идеальный проект", фильтруйте и отзывайтесь только на них
    - жестко фильтруйте клиентов (по отзывам, рейтингу, среднему чеку, средней ставке, потраченным деньгам и тд)
    - не спешите. Проект рано или поздно найдется, не хватайтесь за первый попавшийся, если он вам не совсем подходит или клиент стремный (см. выше)
    - изучите все материалы, которые найдете по поводу того как фильтровать проекты и как писать хорошие cover letters - это ваш главный инструмент продаж

    Английский у меня на уровне pre-intermediate ... будет ли это камнем преткнования, или можно использовать чат?)

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

    Да, если английский свободный (и в профайле стоит галочка что это подтверждено отзывами предыдущих клиентов), то для некоторых клиентов / проектов это может иметь значение. Но это уже специфика.
    Ответ написан
    5 комментариев
  • Как установить и пользоваться Composer в PhpStorm?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Установить Composer глобально в системе. Идем сюда, выбираем инструкцию под свою операционную систему и устанавливаем.
    2. Используем терминал для работы с composer и проверки что все ок. Если не знаете что такое терминал - гуглите под свою операционную систему. С помощью того же терминала выясняем путь к исполняемому файлу composer (опять же, если не знаете как - гуглите).
    3. Когда проверено, что composer работает в терминале, идем в PhpStorm, открываем Settings -> Languages & Frameworks -> PHP -> Composer и там указываем путь к 'composer' executable (который мы посмотрели в предыдущем шаге) и путь к composer.json (это будет в корне вашего проекта).

    Если какой-то из терминов / шагов непонятен - гугл в помощь. Composer и вся эта кухня штука достаточно простая, но если у вас Windows, совсем нету опыта работы с командной строкой то первые шаги будут со скрипом - и это нормально. Не парьтесь. Разбивайте подобные "задачи" на вот такие мелкие шаги, последовательно изучайте каждый из них, и очень скоро у вас все будет работать. In no time.
    Ответ написан
    Комментировать
  • Сделать массовый re-order (переворот порядка) WordPress-постов в кастомной таксономии (категориях)?

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

    Для начала нужно понять как в WP делается подобная "ручная" сортировка. По умолчанию WP сортирует по дате создания, от свежих к старым. Теоретически, можно выбрать все записи составив произвольный запрос с нужной сортировкой, пройтись циклом по ним и изменить даты. Часто для произвольных типов записей дата сама по себе бессмысленна (данные не имеют возраста, как посты например) и нет ничего плохого в том, чтобы ее поменять.

    Второй вариант - использовать сортировку по menu_order ('orderby' => 'menu_order'). По умолчанию значение равно 0, можно точно так же выполнить WP_Query с нужными параметрами сортировки для текущих записей, потом пройтись по полученным записям циклом и установить нужный menu_order. Именно это значение используют плагины для drag-n-drop сортировки записей в админке.

    Ну и да, можно просто использовать нужную сортировку только в тех местах где надо - если это глобальный WP_Query, то через хук pre_get_posts, изолируя нужные условия, если это вторичный цикл - тогда просто через параметр order_by.
    Ответ написан
    Комментировать
  • Есть ли события в WPForms?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Да, поддерживает.
    Да, все это есть в документации.

    https://wpforms.com/developers/categories/actions/
    https://wpforms.com/developers/categories/filters/
    Ответ написан
    Комментировать
  • Как вывести в Wordpress кнопки с ссылками на страницы использующие определенный шаблон?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Используемый шаблон (файл, не его название) записывается в wp_postmeta, получить можно с помощью meta_query:
    $args = [
        'post_type' => 'page',
        'posts_per_page' => 100,
        // 'post__not_in' => [ get_the_ID() ], // Раскомментируйте, если хотите исключить текущую страницу
        'meta_query' => [
            [
                'key' => '_wp_page_template',
                'value' => 'custom-template.php'
            ]
        ]
    ];
    $my_pages = new WP_Query( $args );
    
    if ( $my_pages->have_posts() ) :
        while ( $my_pages->have_posts() ) : $my_pages->the_post();
            the_title( '<h3>', '</h3>' );
        endwhile;
    endif;
    
    wp_reset_postdata();
    Ответ написан
  • Как лучше делать пагинацию при натяжке на WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Пагинация в WordPress уже встроена из коробки, даже 2, с гибкими настройками. Первая - простая "вперед / назад", вторая - с настраиваемыми номерами страниц и тд.

    Ну а внешний вид (дизайн) с помощью CSS делаем.
    Ответ написан
    1 комментарий
  • CMS с красивыми шаблонами?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Попробуйте сервис WordPress.com, идеально ложится под ваши требования
    Ответ написан
    Комментировать
  • Создание личного сайта 18+?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Я бы не советовал ввязываться в self-hosted и self-managed решения, объем технической работы, который необходимо будет выполнить (и продолжать выполнять более-менее регулярно) колоссален, не стоит оно того. Есть специализированные площадки, которые покроют большинство ваших задач, советую начать с onlyfans.com.
    Ответ написан
    3 комментария
  • Как оптимизировать Script Evaluation?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Script evaluation time зависит от количества JS кода, который браузеру надо выполнять. Меньше кода - быстрее выполнение, меньше блокируется основной поток. Два джедайских пути - использовать меньше js вообще, и разгружать основной поток (на заставлять браузер выполнять все за раз в основном потоке, блокируя рендеринг - здесь частично поможет асинхронность).

    Полезное чтиво:

    https://developers.google.com/web/fundamentals/per...
    https://developers.google.com/web/fundamentals/per...
    Ответ написан
    Комментировать
  • Где можно проконсультироваться по поводу ЧП, ФОП в Украине?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Открывайте спокойно ФОП в Украине на себя, в чем проблема? Для работы с Европой (да и всем остальным миром) этого достаточно, ФОП на 3й группе по нашим КВЭДам может вести ВЭД. У меня вот ФОП, работаю в белую, большинство клиентов и проектов - Европа, США, Канада, Австралия. Платят обычными банковскими переводами на валютный счет.

    Единственный минус - Stripe, PayPal и многие другие сервисы в Украине не работают, но вам вполне может хватить Paddle или даже приватовского LiqPay. В общем, для открытия юрлица в Эстонии нужна веская причина, произрастающая от невозможности что-то сделать в украинской юрисдикции или из-за конкретных требований Евросоюза (например, какое-то лицензирование).

    Что касается консультаций - в общем и целом там все очень просто. Как открыть ФОП, счета, сделать электронные ключи и подпись, как вести налоговый учет онлайн и тд - все это на есть на https://taxer.ua/ и официальных ресурсах. Ну а уже по частным нюансам можно искать дополнительную консультацию - бухгалтера или юриста.
    Ответ написан
    1 комментарий
  • Почему brew выдает такую ошибку?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Выполните
    sudo rm /usr/local/lib/node_modules/@vue/cli/node_modules/extglob/lib/.DS_Store

    введите свой пароль когда спросит. По идее этого файла там быть не должно. Возможно вы ходили в ту папку через Finder. Далее выполните brew doctor и sudo brew cleanup. Если это не поможет - изучайте вот этот issue.
    Ответ написан
    Комментировать
  • Как создавать автоматические посты в WordPress из ленты Twitter?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Создаете свой плагин.
    2. Подключаете в нем Twitter SDK на удобном для вас языке (в случае с WP скорее всего это будет JavaScript или PHP).
    3. Пишете логику для проверки обновлений в ленте твиттер аккаунта.
    4. Пишете логику для получения контента индивидуального твита и сохранения в виде записи в WordPress.
    5. Создаете фоновую задачу, которая проверяет обновления в ленте (№3) если обновление обнаружено - получает контент и сохраняет (№4).
    6. Профит!
    Ответ написан
  • Как настроить быстрый просмотр PDF, XLS,DOC файлы в телеграм на macOS?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У меня при даблклике открывает предпросмотр в Quick Look:

    5eafd9378c23d483346085.jpeg

    То же самое с XLS, DOC и любым другим форматом, который macOS умеет предпросматривать. У вас похоже глобально (system-wide) ассоциация типа файла слетела или же у Quick Look нет плагина для этого типа.
    Ответ написан
  • Сложный вопрос. Как сделать автоматический выбор рубрик с других таксономий?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вам нужно 2 таксономии - города и типы (впрочем, и типы можно было бы дробить на отдельные таксономии, но это уже надо смотреть ТЗ и вникать, возможно на долгосрочную перспективу это имело бы смысл, возможно нет). Каждой записи вы назначаете термины отдельно друг от друга. Каждая запись должна иметь термин "город" (Киев, Москва и тд) и термины типа - один первого уровня (Рестораны, Спорт) и один или несколько второго уровня (например TRX, сквош и тренажерка в одном и том же спорткомплексе). Со структурой разобрались?

    Обратите внимание, дерево терминов "Рестораны, Спорт и тд" не под "Москва" должны быть, как у вас. Это должны быть независимые таксономии, они между собой никак не связаны. Запись получает независимо термин(ы) из одной и другой. Только запись знает о 2х таксономиях, сами таксономии друг о друге знать не должны и связи между ними быть не должно.

    С таким (правильным с точки зрения архитектуры) подходом ваш вопрос теряет смысл.
    Ответ написан
    1 комментарий
  • Как внутри шаблона передать из js в php?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Простым языком - дело в том, что:

    - сначала PHP код (все что между <?php и ?>) будет выполнен на сервере, и в вашем случае там будет пусто, потому что переменная $type будет существовать только на сервере в момент выполнения этого фрагмента кода, этот код в этом месте ничего не выводит (не делает echo, print, printf и тд).

    - далее будет сгенерирована HTML страничка, которая содержит JavaScript код (все что между <script> и </script>), но еще раз - PHP-кода там уже не будет (он выполнился), вместо него будет результат этого выполнения (в вашем случае - пусто, см. выше)

    - JavaScript код выполняется браузером, после того как он сгенерирован на сервере и скачан оттуда этим самым браузером. И в браузере ваш скрипт, с учетом что PHP там ничего не напечатал, будет выглядеть вот так:

    <script>
    if (screen.width>500) {
    } else {
    }
    </script>

    Таким путем как вы пытаетесь вы можете передать данные из PHP в JavaScript, например <?php echo $type; ?> выведет в JS значение переменной $type. Обратно из JS в PHP вы так данные не передадите, это как путешествие во времени в 1994й год.

    Для передачи данных на сервер используется ajax.
    Ответ написан
    Комментировать
  • Как проверить имеющуюся идентичную строку перед вставкой новой?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    INSERT INTO my_table (login, host, event_id) 
    SELECT 'strelkov.av', 'home_pc', 1
    FROM my_table
    WHERE login='strelkov.av' 
    AND host='home_pc'
    AND event_id=1
    HAVING COUNT(*)=0;

    Обратите внимание, что значения login, host и event_id вам в 2х местах надо указывать. Работает это дело так - если конструкция SELECT ... HAVING COUNT(*)=0 вернет true (то есть SELECT не нашел записи с таким логином, хостом и ID ивента), то будет выполнен INSERT. Если же SELECT вернет false (COUNT не равен 0, значит такая строка уже существует), то INSERT будет проигнорирован целиком. Понимаю, что это не сразу вкуривается, но SQL штука интересная :)

    PS: Подразумевается, что id у вас AUTO_INCREMENT, а у date DEFAULT NOW() и их передавать вообще не надо.
    Ответ написан