Роман: порог входа в WP низкий, но для того, чтобы брать по $20+ в час, нужно не только этот порог пройти, но и продвинуться заметно дальше вглубь. В вашем же случае меня смущает ваш подход в общем. Вот я занимаюсь разработкой сайтов, потому что меня это прет. Грубо говоря, если мне сейчас бы упал лям баксов, который можно положить на депозит и жить на проценты до конца дней своих, без необходимости работать, я бы все равно занимался этим и дальше. Может, в меньшем объеме, но продолжил бы. Потому что мне это интересно. Именно такой подход позволяет рыть вглубь и становиться специалистом в этой сфере. А у вас (по крайней мере со стороны, могу ошибаться) звучит как "подскажите где лучше клев" - то есть, вам не процесс интересен, а только плюшки в конце. Так не работает. Даже в самой золотоносной нише с таким подходом ничего не получится. Для начала определитесь с тем, что зажигает. И развивайтесь именно в этом направлении. Постепенно станете в нем разбираться, а деньги - это ужже следствие. Будете специалистом в какой-то сфере - деньги придут сами. Потому что всегда найдутся люди, которым понадобятся качественные услуги в этой сфере.
> все таблицы в myISAM
Не обязательно. Разберитесь в разнице и выбирайте с умом.
> выборке поможет индексирование с unique
Какой выборке? Вы то же самое пишете в комменте выше, про 30к юзеров и индексы, но ничего же понять нельзя. Что за запросы?
> результаты выборки кэширую через memcache
Забыли про букву D в конце. Берите php-memcached, а не php-memcache.
> Почта через Sendgrid, взаимодействие через их php библиотеку
Зачем через из библиотеку? Postfix настройте на работу через них, и все.
> Также хочу воспользоваться кэшированием nginx
Да, fastcgi_cache крутая штука, супер-быстрая. Но это статический кеш. Если нужна динамика - всплывает вагон нюансов. Впрочем, почти все решаемо.
> когда все пользователи сайта имеют разный контент (80-90% посетителей авторизованы и будут получать немного разные страницы(их имя, количество репутации и прочие мелочи))
Ну вот и нюансы. В принципе, можно добиться и этого, но уже сложнее. Это не просто пару строчек в конфиге.
> ругается только на сервер, всё остальное- зелёное
Поздравляю! Это уже очень хорошо :)
> акие лучше dns сервера использовать?: например от регистратора digitalocean, или такие сервисы как cloudflare или google public dns
Digital Ocean достаточно.
> и без файрволла, отключил его для экономии ресурсов
А вот это очень зря. Верните обратно. Правда, я не в курсе про какой файрвол вы говорите. Лучше сделайте на уровне iptables / ufw. Он ресурсов не жрет. Уж точно на порядки меньше чем Vesta.
Роман: в PHP, как и в любом другом языке, невозможно "сразу разобраться". От начального уровня до уровня синьора долгий и тернистый путь, при чем он уже не по книжкам, а по реальным задачам, которые надо фигачить, наступать на грабли, учиться, переучиваться и тд. С нуля вот так просто перескочить на уровень Laravel не получится.
tovogukA: не начинайте холивар на пустом месте. Экосистема и рынок WP - огромны и уж точно не меньше чем у той же лары. Порог входа совсем разный. Если для начала работы с WP достаточно базового понимания PHP и можно учиться по ходу, то для новичка в PHP Laravel - это квантовая физика. Порог входа существенно выше. А от порога входа до мастеринга - весьма долгий путь. Не сравнивайте теплое с красным.
> Кому нужны эти плагины.
26.1% всего интернета.
> Платят не "за", а "кому". Платят спецам.
Совершенно верно. И спецы востребованы, берут дороже плюс обеспечены работой. За мелкие и простые задачи не берутся. И уж тем более спец по бекенду и функционалу не будет браться за разработку темы.
Hyubert: естественно, шишки поналачу все набивают, это неизбежно (собственно, на этом мы все и учимся) и вполне нормально. Customizer API - это апишка именно WordPress. Аналога для html страниц я не встречал. Но это не означает, что его нет. Впрочем, механизм все равно должен куда-то сохранять данные - в файл, базу данных и тд. Да и сам этот фронтенд-редактор такой будет однозначно не сильно простым, это React / Backbone / Angular / Ember или что-то и этой оперы. По сути - тоже хардкорный программинг, только вместо PHP тут Javascript.
Hyubert: Тогда сначала делайте статику и выставляйте на продажу ее. На тот же ThemeForest даже хорошо сделанная тема опытным разработчиком может проходить верификацию достаточно долго и возвращаться админами на доработку / фиксинг. Без опыта это тягомотина на недели минимум, если не месяцы. Вас будут попросту возвращать тему на доработку и отправлять читать документацию.
По уточнениям - без проблем, спрашивайте более конкретно. Подскажу.
Роман: да, все верно. Плагины - это чистый PHP. Без него никак. Что касается оплаты - самое дешевое это фиксы премиум-тем, а также сборка сайтов целиком на базе премиум-темы и готовых плагинов. Дальше идет разработка тем. Это в большей степени фронтенд, поэтому и стоимость не сильно высокая, хотя зависит от сложности верстки. Далее идет разработка плагинов. Тут диапазон цен может быть от нескольких часов до недель. Ставка на этом уровне уже от $20/час. У меня были как простенькие плаги за $60-90, так и за 2000-3000. Раз на раз не приходится, зависит от задач. Ну и самое дорогое - это полный цикл, кастомный сайт с нуля. Но тут уже нужен и дизайнер, и верстальщик, и разраб. В этой категории тоже часто бывают неадекватные заказчики, которые хотят получить полностью кастомный сайт за $500, но они элементарно флиьтруются ценником. Адекватные клиенты (в основном западные конечно же) готовы платить адекватные суммы за такую работу. Но и работа должна быть на соответствующем уровне - тут уж разраб должен не просто PHP знать, а очень хорошо знать, плюс сам WP тоже.
tovogukA: Обязательно. Upwork - это биржа. "Спецов-имплементаторов" по доллару в час - масса. Хотите зарабатывать - знание PHP обязательно. 50% заказов, связанных с WP - это фронтент, мелкие фиксы. Но это копеечные заказы. Все, что более-менее ощутимо для кошелька - это более сложные задачи, которые требуют знания PHP. Конечно, если вас устраивает собирать из платной темы и парочки плагинов говносайты за $100-$200 - тогда не обязательно. Если хотите зарабатывать адекватные деньги - обязательно и не обсуждаеттся.
Андрей Соколов: регулярки в 'ignore' решают данную проблему очень просто. Для классов-модификаторов, которые используются скриптами, добавляйте префикс js- и его же игнорируйте регуляркой. Вот и все.
Андрей Соколов: Вы документацию читали? Есть параметр 'ignore', куда прописываете те селекторы, которые нельзя вырезать (поддерживает как конкретно селекторы, так и регулярки). Можно также перед селектором в CSS добавить коммент /* uncss:ignore */
IceJOKER: Понял. Для интереса - катит)
У меня недавно была аналогичная задача с этими селекторами, до этого сам не знал что их можно вот так склеивать. Удобная штука.
Крил: Ну, если дело в том, что ячейки таблицы в бд у вас с одной кодировкой, а данные внутрь записаны с разной - где с такой же, а где с другой, то так и будет, по логике. Впрочем, не берусь гарантировать, давно не сталкивался с подобными глюками, лет 8. Нифига уже из тех старых костылей не помню
По контрибьюторству - ну вы собсно в холивар и ушли. Спорить смысла действительно нет, о чем я написал в предыдущем комменте. Если вам комфортнее, если "последнее слово" остается за вами - пусть так и будет, закрыли тему.
По плагину - аккурат точь в точь то, что я говорил - ПРОТОТИП, PROOF OF CONCEPT. Все остальные ваши "ограничения" - это оправдание. По сути, вы уложились в эти пресловутые 2 часа, но то, что вы сделали, не является готовой работой, и клиентом принято быть не может. Я уж молчу про то, чтобы самому быть удовлетворенным результатом за который не стыдно. Да и с этим кодом вы лукавите. С магазином :)
Не сделано вообще, по вашим же словам:
- нет работы с реальными используемыми языками и с произвольным их количество (надо из qTranslate X получать активные, получать язык по умолчанию и работать с ними, это +2 функции) - 15 минут
- документирования нет, ну да ладно, пусть это будет моя персональная заморочка - 30 минут
- крона нет, а с ним как раз предостаточно нюансов - задача, обработчик ошибок и повторное назначение, garbage collector и тд + отладка - смело добавляйте 2 часа сверху. Я лично к крону отношусь положительно, но имея опыт работы с ним, отношусь к также и осторожно. - 2 часа
- вы делаете для юзера, значит опции нужны, хардкодить нельзя (то же касается языков) - 30 минут
- переводите только тело поста, нет ни заголовка, ни мета. Не совместимо ни с одним плагином, который добавляет мета - SEO, ACF, WooCommerce и тд. Никуда не годится, голый прототип. Для того, чтобы отслеживать корректно все мета - еще часа 2 накидываем сверху
- код работает только с постами, не работает со страницами custom post type (и уж тем более не учитывает какие post types разрешены для перевода) - еще 1 час
- код не работает с taxonomies - и встроенными, и кастомными. И также не учитывает настройки qtranslate - еще полчаса (reuse кода из предыдущего пунтка)
- код побъет кучу лишнего - например shortcodes - минимум 1 час
- запросы кешировать можно, но в данном случае необязательно
Итого, сверху: 7 часов 45 минут. Как я и говорил изначально.
Повторюсь, вы за час слепили proof of concept. Годно, но это не конечный результат который можно отдавать за деньги. Вы создали клиенту больше проблем, чем у него было в самом начале. По сути у вас 3 простые фичи - взять тело поста, отправить на апишку на перевод, забрать из апишки ответ и сохранить. Этого недостаточно, чтобы брать за это деньги и называть это работой.
+ беглое code review:
- нет документации
- захардкодили важные данные
- нет никакой валидации данных
- ваш WP_Query берет крайний пост, очень грубая работа, чревато косяки и перезаписью данных из другого поста
> На мой взгляд, если у вас по задачам итоговое время всегда и в несколько раз превышает предварительную оценку, вы что-то делаете не так.
Совершенно верно. Были случаи лет 10 назад, каюсь. Горьким опытом научен, что "эгэгэй, гасконь!" - плохая практика. С тех пор предпочитаю считать вдумчиво.
> Но если и эти правки делать, то тогда я бы как вы, не смог бы уложится в заявленный бюджет/сроки)
Отож! Вот я об этом же. А без этих правок - это голый прототип, а не готовая работа.
ЗЫ: Вот честно, вы же сами прекрасно все понимаете. Зачем этот спор? Вас так выбесило мое "контрибьютор", что вы готовы угробить половину выходного дня на то, чтобы доказать всему миру, что я неправ? :) Я "пушу" мультиязычность в ядре при каждой возможности и активно работаю с несколькими плагинами - Polylang, qTranslate X (ранее с оригинальным qTranslate), WPML, в том числе и контрибьчу, в том числе иногда и код (не считая отлов багов и тестирование). Если уж вас так коробит от этого слова - читайте как "хорошо знаю код плагина".
Андрей: Задача как раз не сложная, вопрос только в отладке. Я сейчас попробую на локалке сделать, а то код выше из головы написан, не тестил. Может быть где-то ошибку допустил.