Ответы пользователя по тегу Веб-разработка
  • Wordpress предназначен для большой нагрузки?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. 100 тыщ в сутки - это не много.
    2. Если брать чистый WP без 50+ говноплагинов, то он из коробки очень шустрый.
    3. Если кастомизировать (плагинами и руками), то все зависит от кривости кастомного кода / плагинов.

    Правильно настроенный сервер обойдется недорого. Если сайт в основном статика (гостевые визиты, нет корзины, личных кабинетов и тд) - $5-10 в месяц. Если динамика, юзеры, все дела - лучше брать за $20. Цены все указаны в тарифных планах Digital Ocean.

    Серверный стек:
    - Nginx 1.9.* (на момент написания данного текста)
    - PHP 7
    - Memcached
    - MariaDB 10.1/10.2

    А также фришный SSL-сертификат от Let's Encrypt + HTTP/2 протокол на стороне Nginx.

    Плагины на стороне WP:
    - Memcached is your friend для объектного кеша
    - Fast Full-Page Cache для кеширования если сайт статичный (см. выше)
    - WP Super Cache для кеширования если сайт динамичный (см. выше)

    Впрочем, если сайт статичный и есть желание заморочиться - можно складывать в родной Nginx'овский fastcgi_cache, который, в свою очередь замаунтить в памяти. Будет вообще супермегабыстро и rpm такой, что выдержите любой хабраэффект.
    Ответ написан
    2 комментария
  • Как сделать пагинацию по своей выборке?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ничего не понятно :)

    Если я правильно улавливаю суть, на странице остался дефолтный запрос, но кроме него используется еще и вторичный запрос (WP_Query), и вы хотите чтобы пагинация была по вторичному запросу, а не главному?

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

    Уточните вопрос и покажите код, тогда легче будет помочь.
    Ответ написан
  • Как трансферить страницы с одного WP сайта на другой WP?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Установить WP Sync DB на обеих сайтах и делать push/pull по мере необходимости. Еще есть add-on WP Sync DB Media Files, также переносить картинки.
    Ответ написан
    Комментировать
  • Добавить "выбор роли" в кастомной форме регистрации WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Получить список всех ролей, доступных для работы:
    https://codex.wordpress.org/Function_Reference/get...

    Доступ к ролям пользователя происходит через WP_User:
    https://developer.wordpress.org/reference/classes/...
    Ответ написан
    Комментировать
  • Какие технологии нужны для реализации CMS?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если все данные должны редактироваться, то не вижу проблемы в поднимании WP. И не вижу почему он должен вдруг быть громоздким. Если кратко - вам нужно редактировать данные, у WP это есть. Писать свой бекенд (авторизация и редактирование данных как минимум), имхо, неразумно. Разве что заказчик настаивает и достойно оплачивает.
    Ответ написан
  • Как определить от чего идет нагрузка на сайт?

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

    Если дебажить что именно вызывает нагрузку - надо смотреть логи, тестить с помощью Plugin Performance Profiler.
    Ответ написан
    Комментировать
  • PHP, server-side, web-dev. Что лучше два монитора или один большой 27дюймов?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Очень индивидуально. У меня смешанные задачи - в основном бизнес и бекенд, а также администрирование серверов, фронтенд и дизайн. Сейчас один широкий монитор 24". Пробовал с 2мя - не то. Не могу. Неудобно, хоть тресни. Скоро буду менять обычный комп на макбук про, к нему буду брать либо 27", либо из этих новых 21:9. Многие верстальщики использую 2 монитора и довольны. Кому как.
    Ответ написан
    Комментировать
  • Cтоит ли делать сайт портфолио с блогом на WP?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Попробуй wordpress.com для начала.
    Ответ написан
    Комментировать
  • Если есть, то покажи - в Wordpress, вредно ли?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А есть у вас Memcached / Redis на сервере? Вообще, когда вы получаете пост / посты, то по умолчанию WP запрашивает и кеширует их метаданные. Так что все вызовы get_post_meta() внутри Loop не дают никакой нагрузки на БД, эти запросы обращаются исключительно в кеш (runtime или persistent). Так что спокойно можно использовать такой код и не беспокоиться о нем.

    Что касается самого MySQL - подержите работающим хотя бы с недельку (оптимально - месяц), чтобы статистику накопить. Анализируйте - через MySQL Tuner, PHPMyAdmin, через SQLProfiler, mysqlslap, смотрите slow query log, ищите утечки памяти или залипающие запросы.
    Ответ написан
    5 комментариев
  • Почему github, а не gitlab?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если уж сравнивать разные сервисы, то стоит расставить их в порядке популярности:

    1. GitHub
    2. BitBucket
    3. GitLab

    Немного подробнее:

    1. GitHub

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

    - в бесплатном акке нет приватных репо
    - аккаунт организации создается из аккаунта юзера, не совсем удобное управление

    Обновление от мая 2020: бесплатные приватные репозитории давно есть, управление командами/организациями сильно улучшилось + появился еще целый вагон фич.

    2. BitBucket

    + неограниченное количество приватных репо бесплатно
    + аккаунт компании - виртуальный, легче и удобнее управлять
    + куча сторонних интеграций тоже, но меньше чем GitHub

    + / - интеграция с продуктами Atlassian (например, Jira) - кому-то огромный плюс, кому-то минус. Битбакет популярен на западе у энтерпрайзов

    3. GitLab

    + бесплатные приватные репо
    + self-hosted версия (но это уже из другой оперы)

    - самый молодой, совсем юный, есть баги, функциональность еще бедная и не выпилена
    - мало внешних интеграций

    Обновление от мая 2020: Функциональность GitLab давно уже нельзя назвать бедной - в некоторых аспектах они и GitHub превзошли.
    Ответ написан
    2 комментария
  • Как добавить 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();
    Ответ написан
  • Какую CMS выбрать для большого проекта?

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

    Но! Учитывая, что живем мы в реальном мире, где не все так гладко (и, как подсказывает опыт, обычно все очень-очень неровно), вангую необходимость многое допиливать / перепиливать под себя. Это все реально, и можно сделать качественно и под себя на WP, но объем работ будет немалый, сложность тоже на уровне. Соответственно, реальная стоимость разработки и дальнейшей поддержки выйдет весьма круглая. ИМХО, в таком случае лучше писать под себя на какой-нибудь Laravel. Либо, идеальный вариант, сначала собрать по-быстрому на WP и парочке платных плагинов, загрузить редакторов работой, собирать все замечания / правки / пожелания и тд. И параллельно писать с нуля свою платформу, учитывая параллельный реальный опыт.
    Ответ написан
    8 комментариев
  • Как часто разработчикам сайтов 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 или на гитхабе ищите), это отличный учебный материал. И уже после этого берите ответственность за коммерческий проект.
    Ответ написан
    Комментировать
  • Какой редактор использовать для создания темы wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Есть ли какие-то альтернативы, чтобы быстро создавать темы для вордпресс (фронтенд+бекенд)?

    То, что вы имеете в виду - это конструктор говнокода из лего-конструктора, а не фронтенд+бекенд. Если вам ехать (действительно создавать) - любой редактор, от Notepad.exe до Sublime Text или PHPStorm. Если вам шашечки, да еще и бесплатно - ну.. попробуйте Page Builder, что ли.
    Ответ написан
    Комментировать
  • Как выяснить, что не даёт странице загрузиться до конца?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    PHP то тут при чем? Смотрите не только консоль, но и закладку Network.

    UPDATE:
    Похоже отловили баг в библиотеке. См. комментарии к этому ответу.
    Shultc "Библиотека, генерирующая альбомные thumbnail'ы не закрывает тег img"
    Ответ написан
  • Как у вас организована командная работа?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Slack, Trello, GitHub & BitBucket. Местами skype и почта.
    Ответ написан
    Комментировать
  • Как в WordPress на странице записей выводить одну определенную запись?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Тема вроде как и решена, но не совсем корректно. Оставлю для будущих поколений.

    dm: если конкретно этот, основной цикл надо видоизменить, то делается это так:
    function my_modify_query( $query ) {
        // это главный запрос, мы не в админке, мы на архивной странице
        if ( $query->is_main_query() && ! is_admin() && is_archive() ) { 
            // конкретный пост по его ID
            $query->set( 'post__in', array(345) ); 
            // Устанавливать можно любые свойства объекта WP_Query
        }
    }
    add_action( 'pre_get_posts', 'my_modify_query' );


    Документация:
    на WordPress Codex (англ).
    на WP-Kama (рус)
    Ответ написан
    Комментировать