• Где получить сертификат по WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У Upwork тоже можно пройти тест. Дают ли сертификат - хз, никогда в жизни не понимал зачем они нужны, кроме каких-нибудь энтерпрайз-инструментов, без которых в корпоративном секторе с тобой разговаривать даже не станут (SAP и все такое).
    Ответ написан
    Комментировать
  • Почему нельзя запускать composer install под рутом?

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

    Дальше - Композером мы ставим сторонний код, хрен знает что там в том коде (вы же не проверяете лично все пакеты, а потом рекурсивно их зависимости, и зависимости их зависимостей). Поэтому так делать - ай-яй-яй-апасность. Рискованно. О чем Композер как бы намекает.

    К тому же, вообще делать что-либо рутом на сервере - плохая практика. Именно по тем же причинам - чтобы по старинке не копипастнуть какой-нибудь код из этих ваших интернетов в командную строку - а дальше как в комменте FanatPHP про классику.

    Должен быть отдельный пользователь, которым вы коннектитесь, и у него - права sudo. Использовать эти права только в крайних случаях, когда они реально нужны.
    Ответ написан
    Комментировать
  • Как в плагине carbon-fields динамично добавлять поле?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Это называется рипитер (repeater field). В Carbon Fields смотрите Complex Field и Repeating Groups.
    Ответ написан
  • Как вывести список меток в карточке товара в woocommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Например, в карточке товара код выглядит вот так:

    Нормальный код, что вас в нем смущает? Переменная $product содержит в себе объект Product со всеми свойствами и методами. Это расширенный аналог объекта Post, только от WooCommerce.

    мне нужно выводить в карточке товара фразы по типу: "Нет в наличии", "Под заказ" и т. п. Ничего более умного, кроме как делать это через метки я не придумал.

    Зачем? У WooCommerce есть управления наличием товаров (Stock Management, не знаю как оно правильно в русской версии). И вся эта информация потом будет доступна в $product.

    Проблема в том, что метки тоже не выводятся. Я пытался между Артикулом и Ценой добавлять различный код, найденный в инете. Либо сайт падает с 500 ошибкой, либо ничего не меняется.

    Добавлял в functions.php код и вставлял шорткод в тоже место. Тоже не работает.

    Судя по всему вы не разработчик, поэтому оно вам так тяжело дается. Но вы совершенно не туда копаете. Советую обратиться к специалисту по WooCommerce, он решит эту задачу быстро и эффективно. Обучать вас на Тостере работе с платформой WooCommerce, основам ООП - не вариант.
    Ответ написан
    Комментировать
  • Какой плагин использовать на вордпресс для определения геолокации?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Первое что нужно понимать - геолокацию лучше всего делать на уровне сервера. У Nginx и Apache есть для этого модули, многие сервисы типа CloudFlare (если вы используете) делают геолокацию и передают данные в заголовках. В обеих случаях данные геолокации будут доступны в массиве $_SERVER. Это обеспечит максимальную производительность. Есть еще вариант на уровне модуля PHP, но имхо это полумера. Ну а если это на уровне PHP (а тем более на уровне WordPress), то скорость будет желать лучшего. Для геолокации нужно сверить IP по огромной базе данных. На уровне сервера это бинарный файл и все оптимизировано до максимума. На PHP это все runtime и крайне неэффективно.

    Впрочем, если вам все равно нужно простое и быстрое решение в виде плагина, несмотря на все недостатки - смотрите тут https://wordpress.org/plugins/tags/geolocation/.

    Есть еще вариант запрашивать сторонний API, передавая ему IP-адрес, но это вообще адски медленная муть по сравнению с серверной геолокацией.

    Дополнительно не забудьте учесть, что так или иначе данные геолокации вам будут доступны на уровне PHP. Это означает, что если вы используете плагин для кеширования страниц целиком (full page cache), то WordPress в этом случае не запускается вообще (а то и PHP не запускается - зависит от реализации механизма FPC). В этом случае придется опираться на Javascript. Для этого есть HTML Geolocation API, но он эффективен на устройствах с геолокацией и запрашивает у пользователя разрешение на доступ к данным геолокации. Более надежным (но менее производительным) будет что-то из разряда https://dev.maxmind.com/geoip/geoip2/javascript/. Ну или аналоги ищите.
    Ответ написан
    1 комментарий
  • WP ко всем адресам добавлен pagespeed, как избавиться от этого кеша?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Возможно плагин записал настройки в .htaccess на сервере, или в процессе настройки просил вас это сделать руками, а вы уже забыли об этом. Ибо если посмотреть HTTP-заголовки конкретно этого (и некоторых других) файла то там есть x-page-speed: on, что означает что удалили вы явно не всё.

    Update: И как подсказывает Дмитрий в комментах, скорее всего это модуль PageSpeed для Apache. Вам его нужно отключить.
    Ответ написан
  • Как удалить множество старых веток в Bitbucket?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Думаю можно пробовать сделать через GUI локального приложения (Tower, Sourcetree, GitHub Desktop и тд) которое дает возможность массовой работы с ветками (надо смотреть какое из них это предоставляет).

    Ну или из CLI. Из CLI уж 100% получится, и даже автоматизировать потом можно. Подробнее вот тут читайте.
    Ответ написан
    Комментировать
  • Как дать клиенту прямую ссылку на покупку через WooCommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Грубо:
    function prefix_automatically_add_to_cart()
    {
    	// Сначала решите как будете передавать ID товара - через 
    	// GET в ссылке, через кастомный rewrite, POST, куки и тд.
    	// Далее, здесь получаете этот ID, в зависимости от решения выше.
    	$product_id = 1;
    
    	if ( WC()->cart->get_cart_contents_count() === 0 ) {
    		// Програмно добавляем товар в корзину
    		WC()->cart->add_to_cart( $product_id );
    
    		// Переадресовываем на корзину (или чекаут)
    		wp_redirect( WC()->cart->get_cart_url() );
    		// wp_redirect( WC()->cart->get_checkout_url() );
    		
    		die;
    	}
    }
    add_action( 'template_redirect', 'prefix_automatically_add_to_cart' );
    Ответ написан
    2 комментария
  • Стоит ли становиться fullstack?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Не стоит.

    Я сам лет 12 был FullStack и даже активно отстаивал точку зрения, что FullStack это круто, это удобно клиентам, это полезно (даже must have) знать все составляющие и тд и тп. Потом я как-то принял решение уйти полностью в бекенд. И спусть несколько лет понял что это было одним из самых важных и самых правильных решений в моей жизни/карьере.

    Реально и объективно сравнить хорошего фронтендера с фуллстаком, хорошего бекендера с фуллстаком - сложно. Ибо у всех свой уровень, сложно найти кого с кем реально можно сравнить. Поэтому подкрепленных наукой цифр у меня нет. Но по опыту и ощущениям - фуллстак всегда будет по уровню ниже аналогичного узкого специалиста. Потому что физически он не сможет уделять каждому направлению столько времени, сколько узкий специалист.
    Ответ написан
    2 комментария
  • Скрипт очистки папка "загрузка" - оптимизация?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У вас под рукой всегда есть терминал. А в нем - Bash. Пишите себе какие угодно скрипты и выполняйте по расписанию или одной командой. Входной порог очень низкий, более-менее сложные вещи потребуют немножко гугления и чтения документации, но в целом все достаточно просто. Ну и вот когда в процессе у вас возникнут уже конкретные вопросы "как сделать Х" - вот тогда и приходите :)
    Ответ написан
    Комментировать
  • Theme check выдает ошибку get_post_format and/or has_post_format как исправить?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Theme Check не говорит что тут ошибка, он как бы спрашивает WTF?! - вы декларируете поддержку Post Formats с помощью add_theme_support(), но в реальности нигде их не используете. Таким образом он вам как бы намекает - либо крестик снимите, либо трусы оденьте.

    Добавьте реальные Post Formats в код темы:

    - определение формата в Loop при выводе записей функциями has_post_format() и get_post_format()
    - модификация вывода в зависимости от формата (или назначение кастомного CSS класса)
    - добавьте CSS стили для этих кастомных классов

    Либо уберите их поддержку. Потому что сейчас вы врете потенциальному пользователю/покупателю - говорите что есть поддержка, но самой поддержки на самом деле нет.
    Ответ написан
    Комментировать
  • Как убрать дубли страниц с непонятными цифрами в конце URL в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вот отсюда начните:
    https://perishablepress.com/wordpress-infinite-dup...
    Ответ написан
    Комментировать
  • Как определить переменную в зависимости от размера картинки?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Я бы определил пороговые значения, при которых считаем изображение "квадратным" и сверял с ними:

    // Пороговые значения
    $min_ratio = 0.8;
    $max_ratio = 1.2;
    
    // Берем изображение и получает размеры
    $image = "image/{$result['image']}";
    $image_size = getimagesize($image);
    
    // Определяем соотношение сторон c точностью до 1 знака после запятой
    $ratio = round($image_size[0] / $image_size[1], 1);
    
    // Определяем "квадратное" наше изображение или нет
    if( ($min_ratio <= $ratio) && ($ratio <= $max_ratio) ) {
    	dump( 'Оно квадратное!' );
    } else {
    	dump( 'Фигушки.' );
    }
    Ответ написан
    2 комментария
  • На каком движке лучше сделать интернет-магазин с 70000 товаров?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    На любом. 70к записей это не много.
    Ответ написан
    Комментировать
  • Какое регулярное выражение подойдет?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Видоизмененный вариант Stockholm Syndrome, где вместо хардкода значения AT мы ищет двухбуквенный индекс, из 2х заглавных латинских букв. Будет универсально работать для всех стран.

    https://regex101.com/r/I8qfsg/3
    Ответ написан
    Комментировать
  • Где найти расположение конфигурации php?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В терминале php -i | grep php.ini покажет где лежит файл конфигурации.

    Но в вашем конкретном случае все серьезнее - для того чтобы письма не падали в спам недостаточно сказать sendmail от чьего имени вы отправляете. С имейлами все уже давно намного сложнее чем 20 лет назад. Нужна конфигурация на уровне DNS - SPF, DKIM, DMARC и вот это все. Гуглите и курите мануалы.
    Ответ написан
  • Как скрыть логотип ВК на Англо-язычном сайте?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    "Англоязычность" сайта у вас наверняка определяется на уровне WordPress/PHP, так что и скрывать логотип имеет смысл там же. То есть, возвращать с сервера страницу вообще без этого логотипа, а не костылями JS/CSS пытаться скрыть его присутствие.

    Ну а как конкретно это сделать - зависит от того, каким плагином / методом у вас реализована многоязычная поддержка. Обычная проверка:

    // Спрашиваем у плагина какой текущий язык
    $current_language = some_plugin_function_to_get_current_language();
    
    if ( $current_language !== 'en' ) {
        // Вывод кнопки ВК
    }
    Ответ написан
    Комментировать
  • Как отредактировать create_function() в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Анонимная функция:

    $conditional_function = function() {
        return cherry_condition($options_type[$id], $options[$id], $users[$id]);
    }
    $conditional_result = $conditional_function();
    Ответ написан
    Комментировать
  • Как убрать из ЧПУ Action в Laravel?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Исходя из обсуждения в комментах,

    по одному роуту должны отображаться и категории и статья как в вордпресс, скрин ошибки есть

    мне кажется это достижимо только одним путем - один роут и один же контроллер ему, а уже в контроллере вы будете брать значение alias и определять что делать дальше.
    Ответ написан