Ответы пользователя по тегу Веб-разработка
  • Как отключить СПАМ "новый пользователь" от WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Как я уже написал ankfrv в комменте, pluggable функции - это те, которые вы можете переназначить. Поэтому, решение простое - копируете оригинальную функцию wp_new_user_notification() из файла pluggable.php в свой functions.php и убираете код, который шлет письма админу. Получится на выходе такое:

    if ( ! function_exists( 'wp_new_user_notification' ) ) :
    	function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
    		
    		// Return early if no password is set.
    		if ( empty( $plaintext_pass ) ) {
    			return;
    		}
    			
    		$user 	    = get_userdata( $user_id );
    		$user_login = stripslashes( $user->user_login );
    		$user_email = stripslashes( $user->user_email );
    		// The blogname option is escaped with esc_html on the way into the database in sanitize_option
    		// we want to reverse this for the plain text arena of emails.
    		$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
    		$message  = sprintf( __( 'Username: %s' ), $user_login) . "\r\n";
    		$message .= sprintf( __( 'Password: %s' ), $plaintext_pass) . "\r\n";
    		$message .= wp_login_url() . "\r\n";
    		wp_mail( $user_email, sprintf( __( '[%s] Your username and password' ), $blogname ), $message );
    	}
    endif;


    Есть плагин Disable New User Notification Emails, который делает ровно то же.
    Ответ написан
    Комментировать
  • Как отображать разные формы комментариев в разных категориях wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Disqus вообще штука весьма стремная. Исходя из их API и документации - никак. Надо код смотреть, возможно есть хуки.
    Ответ написан
    Комментировать
  • Как вывести дочерние пункты меню, при активном классе родителя? И как вообще добавлять класс активному пункту меню?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    WordPress по умолчанию сам добавляет все необходимые классы, например:
    .menu-item-has-children - родитель, у которого есть дочерние элементы
    .current-menu-item - текущий активный пункт меню
    .current-menu-parent - родитель текущего активного пункта меню
    .current-menu-ancestor и другие.

    Документация и полный список классов - тут.

    Как добавить свой класс - тут.

    RTFM.
    Ответ написан
    Комментировать
  • Как вывести подрубрики на странице рубрик?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Для вывода рубрик есть функция get_categories(). Для вывода подкатерий у этой функции есть аргумент parent, который должен быть равен ID родительской категории.
    Ответ написан
    Комментировать
  • Стараетесь ли вы использовать flex?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Используем по максимуму. Если есть требование под IE8-9, тогда нет, но такой проект обходится клиенту дороже. После недолгого объяснения с показом статистики IE8-9 vs Mobile Devices (плюс динамику роста последних) обычно удается убедить клиента, что не нужен ему IE8-9, а вот всякие современные плюшки, media-queries и тд - очень даже нужны.
    Ответ написан
    Комментировать
  • Пробовали ли Вы конструктор для сайтов (WP)?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Их много, минимум полторы дюжины. Кто-то использует, кто-то делает руками. Вопрос, как и с любым другим инструментом, должен стоять так - "а есть ли смысл использовать Х в этом конкретном проекте". И ответ на этот вопрос зависит от конкретного проекта.
    Ответ написан
    Комментировать
  • Ошибка в WooCommerce с русским языком, как исправить?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Cyr 2 Lat enhanced пробовали использовать? Кириллические символы в урл - нехорошо.
    Ответ написан
    4 комментария
  • Как организовать команду по разработке сайтов и правильно делегировать задачи?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Искать адекватных фрилансеров с похожим стилем мышления и взглядами - так больше шансов что сработаетесь. Объединяться не только по работе за деньги, но и придумать себе дополнительное сотрудничество, например, какой-нибудь совместный Open Source проект, или коммерческий продукт - и тем и другим может быть плагин/тема для WordPress или что-то подобное. Например, тема в двух вариантах - бесплатная Lite для WordPress.org и промо себя любимых, платная Pro для ThemeForest. Такая дополнительная работа позволит всегда быть в одной лодке и теснее работать на общее благо, это отразится и на коммерческих проектах. Кроме того, это всегда бонус и для клиента - например, в заказах по WordPress клиент видит, что я и мои ребята висим на WordPress.org как разработчики плагинов/тем, один у нас вообще в ядро WP контрибьютит. Это большой плюс в карму.

    2. Не увеличивать команду без надобности. 1 человек фронтенд, 2й - бекенд. Дизайнер на первых порах лучше проектно. Расти строго по мере острой необходимости, хотя новых людей надо искать заранее и тестировать в реальной работе. То есть, должно быть постоянное "ядро" команды, и еще несколько на подхвате. Поначалу они на подхвате (и работают себе самостоятельно в остальное время), со временем кто-то из них переместится в ядро, по мере роста.

    3. Со студиями/агентствами надо работать в обратном направлении. У многих из них часто бывают завалы и нехватка собственного ресурса, вы должны быть подрядчиками у них, а не наоборот.

    4. Бюджеты. Самое главное :) Кто-то умный когда-то сказал:
    The kind of clients we attract is directly related to our rates

    Что означает, что качество клиентов прямо зависит от ваших цен. И второе, из опыта - геморроя плюс-минус одинаково в проекте с бюджетом 200$, и в проекте с бюджетом $2000. Времени и усилий на поиск/привлечение клиента тратится столько же. И чаще всего те, кто платит $2000 больше ценят время, работу, и не имеют мозг без острой на то необходимости (см. цитату выше).

    5. Снижать стоимость привлечения клиента (под стоимостью подразумевается и время, и деньги). Повторные / постоянные клиенты - наше все. Оставлять клиентов на поддержке, делать так чтобы они обращались повторно с доработками / развитием своих проектов, приходили с новыми заказами, советовали другим. Например, я вчера закончил интересный проект для повторного клиента. Первым заказом были небольшие фиксы платного шаблона, 2 часа работы / $60, через биржу. Спустя некоторое время он обратился уже за целым сайтом для бизнеса своего отца. Адекватный бюджет. Сделали, запустили вчера. У него уже опять готов список новых фич для этого сайта, через месяц где-то вернется с ними и снова загрузит работой. Имея хотя бы с десяток таких клиентов, можно заполнить половину рабочего времени, не тратя время на поиски новых клиентов. И гемора с ними нет, и с оплатами никаких проблем, и т.д.

    6. Для того, чтобы п.5 в реальности происходил, недостаточно просто делать работу вовремя и хорошо. Нужно клиенту помогать, обучать его, советовать. Недавно был случай - клиент пришел со стандартной задачей пофиксить платный шаблон под его требования. Поковырявшись в этом ужасе и задав кучу правильных вопросов стало понятно, что этот шаблон ему вообще не подходит для этих задач. Проект был переориентирован в разработку с нуля, из $120 бюджет сменился на совсем другие цифры. Задача ведь не просто кнопки понажимать и что-то там накодить, а помочь клиенту решить его задачи. Ему результат в целом важен, а не количество строк кода, которые вы написали, или насколько правильно этот код отформатирован.

    7. Снижать себестоимость разработки. Накапливать типовые решения, код, который можно (и нужно) использовать повторно. В случае с готовыми CMS (а это самый распространенный формат работы) - покупать девелоперские неограниченные лицензии на те плагины, которые существенно экономят время. Мы, например, купив однажды ACF Pro для WordPress существенно уменьшили себе объем работы на каждом проекте. Сейчас будем брать Gravity Forms или Ninja Forms для того, чтобы решить вопрос с формами и кастомными фронтендами, которые жрут кучу времени и сил в разработке даже со своими наработками. Плюс какие-то мелкие решения, которые часто нужны.

    8. Написать для себя стратегию развития. Четко понимать, куда хотим прийти и в какие сроки (плюс-минус), четко определить, что делать, что двигает в этом направлении, а что нет. Тогда будет шанс из кучки фрилансеров вырасти в студию или что-то в этом роде. Без стратегического видения фриланс - это белка в колесе и замкнутый круг. Вечная погоня за небольшими деньгами "на пожрать и отложить на отпуск". Стратегия может быть разной, например, "вырасти в студию", "создать свои коммерческие проекты / онлайн-сервисы", "стать богом в одной конкретной сфере и собирать сливки со всех фриланс бирж - получать самые жирные проекты в этой нише" и т.д.
    Ответ написан
    1 комментарий
  • Что лучше использовать в качестве блока комментариев на сайте: Disqus или комментарии ВК?

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

    Причин на использование встроенной системы комментов несколько:

    1. Скорость загрузки и возможность кеширования
    2. Возможность индексации комментов и поиска по ним (в том числе и поисковики могут индексировать)
    3. Более полный контроль над самими комментами, их дизайном, функционалом формы комментирования (например, разрешить загружать картинки или вставлять oEmbed)
    4. Возможность использования виджетов "последние комменты" и тд
    5. Возможность использовать количество комментов как одну из метрик для определения популярности постов
    6. Отсутствие блокирующих внешних скриптов и запросов. Стараюсь вообще избегать использования внешних запросов с целью сокращения времени загрузки страниц
    7. ... и другие мелкие выгоды, в зависимости от типа сайта

    Что касается спама, то Akismet прекрасно справляется со своей задачей.
    Ответ написан
    Комментировать
  • Что почитать про разработку на Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    code.tutsplus.com/categories/wordpress
    Переводов еще не очень много, но ведется активная работа. А сами материалы там очень толковые, одни только серии уроков от Tom McFarlin чего стоят. Кстати, его уроки можно вполне читать в машинном переводе Google Translate.

    Ну и, самый полезный источник (правда, тоже на английском) - это исходный код и Trac.

    Из русскоязычный - wpmag.ru Константина Ковшенина.
    Ответ написан
    Комментировать
  • Как убрать информацию при печати страницы из сайта?

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

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    WordPress + JSON REST Api (пока это системный плагин, скоро будет в ядре).
    Сама админка имеет адаптивный дизайн, также есть мобильное приложение. Ну а REST Api позволяет общаться с проектом по JSON в оба направления.
    Ответ написан
    Комментировать
  • Почему работает запрос со взаимоисключающими параметрами?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Надо смотреть сам SQL запрос, который получился. Подозреваю, что у вас из-за оператора OR происходит что-то типа "если есть посты по этому tax_query - вернуть их, иначе - стандартные результаты". Могу ошибаться, но без самого SQL запроса дебажить нереально. Установите плагин Query Monitor - все решится за пару минут.
    Ответ написан
    Комментировать
  • Как работает схема пополнения счета на сайте?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    С технической стороны алгоритм такой:

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

    Дальше, выполняя "покупки" на сайте, значение "балланс" будет обновляться соответствующим образом.
    Ответ написан
    2 комментария
  • Как выполнить функцию после сабмита формы?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Код и не мог работать на странице формы, WordPress не позволит. Почитай про lifecycle. Хукаться и выполнять другие низкоуровневые действия можно только из functions.php или из плагина. Непосредственно из файла темы (шаблона) работать не будет, если на пальцах - в тот момент, когда инклудится и выполняется файл темы, все основные экшны уже давно выстрелили.
    Ответ написан
    Комментировать
  • Как вывести все коментарии на определенную страницу в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Можно, написав кастомный кусочек php-кода. Фокус в том, что плагин - это точно такой же кастомный кусочек кода, так почему бы не изобретать велосипед?

    Что касается самого кода, есть функция get_comments().
    Ответ написан
    Комментировать
  • Как англоговорящие называют сайт-заглушку?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Landing page, Parking page, Coming Soon Page, Launch Page. В зависимости от роли.

    Если это просто страничка с лого и надписью Coming Soon - так и называют. Если есть поле для подписки на обновления (когда сайт запустится) или выполнение другого действия (лайк страницы ФБ и прочее) - Landing Page. Если там счетчик обратного отсчета - Launch Page. Если это просто страница без конкретики / системная страница - Parking page.
    Ответ написан
    2 комментария
  • Googlebot-Image и data-src. Как работает индексация картинок?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В данный момент отдельно в индекс картинка 2х не попадет, так как она является всего лишь увеличенной копией основной картинки. Также, сейчас она не попадет и в качестве дополнительного размера к основной, так как бот хоть и парсит значение атрибута data-src, делает эот согласно своим представлениям (googlewebmastercentral.blogspot.com/2011/06/introd... А вообще эта практика для responsive изображений скоро будет упразднена. Сейчас идет open-source разработка модуля Chrome (и других браузеров) для реализации адаптивных картинок через тег picture, он и будет в скором времени использоваться для этих целей.

    Атрибуты, которые реально влияют на индексацию - alt и title. Еще почитайте тут: www.quicksprout.com/2012/11/05/image-optimization-...
    Ответ написан
    Комментировать
  • Слишком подробное техническое задание - это хорошо или плохо?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Надо конечно видеть и слышать клиента для принятия окончательного решения, но вообще, детальное ТЗ - хороший показатель, ибо:
    - клиент действительно вникает во все детали
    - клиент неплохо подкован, ему не надо на пальцах ничего объяснять
    - четкое детальное ТЗ - отличный вариант для сверки выполненных работ
    Я бы не сильно боялся переделок, упомянутых @cyberorg, потому как если есть договор, в котором прописано, что прием работ идет согласно ТЗ, то это только плюс. Сделали четко по ТЗ - у клиента нет выбора кроме как утвердить. Хочет переделывать - договор ему перед нос суешь и говоришь - не вопрос, но это уже ДОПОЛНИТЕЛЬНАЯ работа, которая оплачивается отдельно.

    Лично я таких клиентов люблю и ценю, кроме того, всегда и на все проекты стараюсь делать максимально подробное ТЗ вместе с клиентом. Очень полезно.
    Ответ написан
    Комментировать