Локализация плагина: 5 ошибок, из-за которых перевод ломается
Если плагин рассчитан на чужие сайты, переводы нужно закладывать сразу, а не “потом допилить”. Иначе строки окажутся в шаблонах, а не в коде, и нормальная локализация превратится в ручную правку текста.
— Не оборачивают все пользовательские строки в функции перевода. Для текста используйте __() и _e(), для атрибутов и кнопок — отдельные вызовы, а не конкатенацию строк.
— Смешивают текст и HTML. Лучше собирать разметку отдельно, а переводить только фразы: так меньше шансов сломать порядок слов.
— Хардкодят русский внутри условий, уведомлений и ошибок. Даже одна строка без перевода потом превращается в “островок” на другом языке.
— Не задают правильный text domain и структуру файлов .pot/.po/.mo. В итоге перевод есть, но WordPress его не подхватывает.
Ещё одна частая проблема — плейсхолдеры. Используйте sprintf() и сохраняйте их в переводимой строке, иначе переводчик не сможет перестроить фразу под язык. Для множественного числа берите _n(), а не дописывайте “s” вручную.
Проверьте плагин по простому сценарию: интерфейс, ошибки, письма, настройки, подсказки. Если хотя бы одна строка остаётся без локализации, её почти всегда найдут пользователи.
Если плагин рассчитан на чужие сайты, переводы нужно закладывать сразу, а не “потом допилить”. Иначе строки окажутся в шаблонах, а не в коде, и нормальная локализация превратится в ручную правку текста.
— Не оборачивают все пользовательские строки в функции перевода. Для текста используйте __() и _e(), для атрибутов и кнопок — отдельные вызовы, а не конкатенацию строк.
— Смешивают текст и HTML. Лучше собирать разметку отдельно, а переводить только фразы: так меньше шансов сломать порядок слов.
— Хардкодят русский внутри условий, уведомлений и ошибок. Даже одна строка без перевода потом превращается в “островок” на другом языке.
— Не задают правильный text domain и структуру файлов .pot/.po/.mo. В итоге перевод есть, но WordPress его не подхватывает.
Ещё одна частая проблема — плейсхолдеры. Используйте sprintf() и сохраняйте их в переводимой строке, иначе переводчик не сможет перестроить фразу под язык. Для множественного числа берите _n(), а не дописывайте “s” вручную.
Проверьте плагин по простому сценарию: интерфейс, ошибки, письма, настройки, подсказки. Если хотя бы одна строка остаётся без локализации, её почти всегда найдут пользователи.
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
Media is too big
VIEW IN TELEGRAM
Коллеги, я перезжаю в этот канал - 1 000 000 подписчиков у Иванова! Все строго про арбитраж трафика!
Переезжает сюда - https://t.me/+vKOoe6K4yL0wMzEy
P.S. Популярно тот в ком люди видят своего - мне очень повезло что я такая посредственность!
____
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Дима Лето - TikTok Ads mVas (Dzmitry Leto (Сб-Вс off day ))
Я короче хз зачем мне это , но напишу!
Короче смотрим за "ноунейом" ( ЕЮ ) и тот вообще крышей поехал) взял себе крутанул канал на 1млн подписчиков и хочет сделать его своим основным?
Армия ботов в перед!
Вот его новый канал если что.. https://t.me/+vKOoe6K4yL0wMzEy
Короче смотрим за "ноунейом" ( ЕЮ ) и тот вообще крышей поехал) взял себе крутанул канал на 1млн подписчиков и хочет сделать его своим основным?
Армия ботов в перед!
Вот его новый канал если что.. https://t.me/+vKOoe6K4yL0wMzEy
Forwarded from Петя 2.0! Bundle Mafia
Жирный кукухой поплыл, купил канал почти на лллллям двести подписчиков. Амбассадоры не работают?
Или как теперь PR оценивать? Одна полуголая курдюком трясёт, второй — то трезвый, то бухой, с биполяркой.
Люди, очнитесь.
_________________
Канал | Блог | YouTube | Мультитул 2.0 | ПОЛИГON by Петя 2.0
Или как теперь PR оценивать? Одна полуголая курдюком трясёт, второй — то трезвый, то бухой, с биполяркой.
Люди, очнитесь.
_________________
Канал | Блог | YouTube | Мультитул 2.0 | ПОЛИГON by Петя 2.0
👎 @pacan с пьяну подпись под каждым постом купил, а текст дал такй:
ХОЧЕТСЯ И РЫБКУ СЪЕСТЬ, И..🎣 Залить Fishing Time на TopX!
FTD идёт по 3$, плюс ребята РАЗДАЮТ 1,000,000$ среди баеров! Инфа ТУТ!
Please open Telegram to view this post
VIEW IN TELEGRAM
Админ-панель плагина: 5 вещей, которые ломают UX и раздражают даже профи
Админка плагина — не место для «красиво как на сайте». Здесь важнее скорость, понятность и минимум лишних кликов. Если интерфейс перегружен, пользователь не читает подсказки, а просто закрывает страницу.
Проверьте базовые правила:
— один экран = одна задача;
— важные действия ближе к началу формы;
— опасные кнопки отделены и подписаны без двусмысленности;
— ошибки показываются рядом с полем, а не общим сообщением сверху.
Не прячьте настройки за лишними вкладками и аккордеонами без причины. Если параметр нужен редко — можно спрятать, но если его ищут часто, он должен быть на виду. Слишком длинные формы лучше разбивать на логические блоки: подключение, поведение, интеграции, доступы.
Сильная админка всегда отвечает на три вопроса: что включить, где проверить результат и как откатить действие. Если пользователь понимает это без документации, плагин воспринимается как аккуратный и надёжный.
Сначала упростите путь до главной настройки, а потом добавляйте визуальные детали. В админке выигрывает не самый эффектный экран, а тот, где меньше ошибок и быстрее результат.
Админка плагина — не место для «красиво как на сайте». Здесь важнее скорость, понятность и минимум лишних кликов. Если интерфейс перегружен, пользователь не читает подсказки, а просто закрывает страницу.
Проверьте базовые правила:
— один экран = одна задача;
— важные действия ближе к началу формы;
— опасные кнопки отделены и подписаны без двусмысленности;
— ошибки показываются рядом с полем, а не общим сообщением сверху.
Не прячьте настройки за лишними вкладками и аккордеонами без причины. Если параметр нужен редко — можно спрятать, но если его ищут часто, он должен быть на виду. Слишком длинные формы лучше разбивать на логические блоки: подключение, поведение, интеграции, доступы.
Сильная админка всегда отвечает на три вопроса: что включить, где проверить результат и как откатить действие. Если пользователь понимает это без документации, плагин воспринимается как аккуратный и надёжный.
Сначала упростите путь до главной настройки, а потом добавляйте визуальные детали. В админке выигрывает не самый эффектный экран, а тот, где меньше ошибок и быстрее результат.
Forwarded from Иванов и арбитраж трафика
МАКСИМАЛЬНО ОБЕСКУРАЖЕН, УДРУЧЁН И, НЕ ПОБОЮСЬ ЭТОГО СЛОВА, ОТОРОПЕЛ ОТ ПРОИСХОДЯЩЕГО В «ПИАР»-МИРЕ НАШЕЙ СФЕРЫ.
Я пребываю в некотором нравственном недоумении от той удивительной метаморфозы, которую в последнее время претерпевает понятие «пиар». То, что раньше считалось дурновкусием, беспринципностью и откровенным свинством, теперь, видимо, принято именовать нестандартной маркетинговой стратегией.
Если вам в какой-то момент показалось, что нормально делать то, что было сделано и продолжает делаться, я всё-таки позволю себе озвучить свою позицию: это неприемлемо. Во-первых.
А во-вторых, вы вообще понимаете, куда мы идём?
Сначала люди хотят выйти на РУ и СНГ рынок. Понимают, что нормальный путь - это долго, дорого, кропотливо и без каких-либо гарантий результата. И вместо этого выбирают дорожку дешёвого хайпа, совершенно не сообразуясь с тем, что именно они делают с конкретным человеком.
Потом, видимо, решают, что достигнутой степени публичного резонанса недостаточно, и предпринимают следующий, ещё более одиозный шаг - просто кидают его. Чтобы обсуждали ещё больше.
И я почти уверен, что они прекрасно понимали: это увижу и я. И что как человек, который способен сопереживать подобным людям, в том числе потому, что сам являюсь инвалидом детства второй группы, я мимо этого не пройду.
В итоге для них это один кидок и море хайпа. Но какой ценой? Стоило ли это того?
Не думаю.
Рынок взрослеет. Подобную хуйню, может быть, ещё и не предают публичной анафеме, но уже отлично запоминают. А потом при любой совместной работе держат в уме простую характеристику контрагента: «А, это те ребята. Им похуй».
Репутация вообще штука крайне занятная. Создаётся годами, а профукивается иногда одним весьма опрометчивым маркетинговым решением.
И дабы на этом, пусть кому-то он покажется не очень далёким, возможно, не самым интеллектуально одарённым, но совершенно точно бравом и стремящемся к успеху молодом человеке впредь не было набито брендов, способных породить столь прискорбные ассоциации, я беру на себя полномочия и ответственность отныне быть тем самым AFFPAPA.
Если конкретнее - быть AffPapa.org.
Этот смелый и совершенно точно стремящийся к успеху молодой человек может впредь без малейшего смущения носить на себе бренд AffPapa.
Я приложу все доступные мне усилия, чтобы единственной устойчивой ассоциацией с AffPapa со временем стал именно AffPapa.org.
Полагаю, это будет наиболее изящным разрешением сложившейся нравственно-маркетинговой коллизии.
С уважением, Иванов Е.Ю!
Я пребываю в некотором нравственном недоумении от той удивительной метаморфозы, которую в последнее время претерпевает понятие «пиар». То, что раньше считалось дурновкусием, беспринципностью и откровенным свинством, теперь, видимо, принято именовать нестандартной маркетинговой стратегией.
Если вам в какой-то момент показалось, что нормально делать то, что было сделано и продолжает делаться, я всё-таки позволю себе озвучить свою позицию: это неприемлемо. Во-первых.
А во-вторых, вы вообще понимаете, куда мы идём?
Сначала люди хотят выйти на РУ и СНГ рынок. Понимают, что нормальный путь - это долго, дорого, кропотливо и без каких-либо гарантий результата. И вместо этого выбирают дорожку дешёвого хайпа, совершенно не сообразуясь с тем, что именно они делают с конкретным человеком.
Потом, видимо, решают, что достигнутой степени публичного резонанса недостаточно, и предпринимают следующий, ещё более одиозный шаг - просто кидают его. Чтобы обсуждали ещё больше.
И я почти уверен, что они прекрасно понимали: это увижу и я. И что как человек, который способен сопереживать подобным людям, в том числе потому, что сам являюсь инвалидом детства второй группы, я мимо этого не пройду.
В итоге для них это один кидок и море хайпа. Но какой ценой? Стоило ли это того?
Не думаю.
Рынок взрослеет. Подобную хуйню, может быть, ещё и не предают публичной анафеме, но уже отлично запоминают. А потом при любой совместной работе держат в уме простую характеристику контрагента: «А, это те ребята. Им похуй».
Репутация вообще штука крайне занятная. Создаётся годами, а профукивается иногда одним весьма опрометчивым маркетинговым решением.
И дабы на этом, пусть кому-то он покажется не очень далёким, возможно, не самым интеллектуально одарённым, но совершенно точно бравом и стремящемся к успеху молодом человеке впредь не было набито брендов, способных породить столь прискорбные ассоциации, я беру на себя полномочия и ответственность отныне быть тем самым AFFPAPA.
Если конкретнее - быть AffPapa.org.
Этот смелый и совершенно точно стремящийся к успеху молодой человек может впредь без малейшего смущения носить на себе бренд AffPapa.
Я приложу все доступные мне усилия, чтобы единственной устойчивой ассоциацией с AffPapa со временем стал именно AffPapa.org.
Полагаю, это будет наиболее изящным разрешением сложившейся нравственно-маркетинговой коллизии.
Обсудить все это можно в моем чате - будьте аккуратны, там не всем рады, точней никому не рады, от чего он и великолепен
С уважением, Иванов Е.Ю!
Безопасность кода плагина: 7 мест, где чаще всего прячется дыра
Плагин ломают не только через SQL-инъекции. Чаще всего проблемы начинаются там, где код доверяет данным из формы, URL, REST-запроса или настроек без проверки.
Перед сохранением и выводом держите в голове базовый порядок:
— проверка прав пользователя;
— nonce для действий из админки;
— очистка входящих данных через sanitize_*;
— экранирование вывода через esc_*;
— prepare() для запросов к базе.
Отдельно проверьте загрузку файлов, AJAX-обработчики и кастомные endpoint’ы. Там легко забыть про ограничения по типу данных, размеру и правам доступа. Если метод можно вызвать без экрана админки, он должен быть защищён так же строго, как обычная форма.
Полезная привычка — смотреть на код глазами атакующего: что будет, если отправить пустое значение, строку вместо числа, HTML в поле или чужой ID в запросе. Если ответ «ничего страшного» не подтверждён проверками в коде, значит место надо доработать.
Безопасный плагин — это не один фильтр, а цепочка маленьких проверок. Чем раньше вы начнёте валидировать, очищать и экранировать данные, тем меньше шансов, что баг станет уязвимостью.
Плагин ломают не только через SQL-инъекции. Чаще всего проблемы начинаются там, где код доверяет данным из формы, URL, REST-запроса или настроек без проверки.
Перед сохранением и выводом держите в голове базовый порядок:
— проверка прав пользователя;
— nonce для действий из админки;
— очистка входящих данных через sanitize_*;
— экранирование вывода через esc_*;
— prepare() для запросов к базе.
Отдельно проверьте загрузку файлов, AJAX-обработчики и кастомные endpoint’ы. Там легко забыть про ограничения по типу данных, размеру и правам доступа. Если метод можно вызвать без экрана админки, он должен быть защищён так же строго, как обычная форма.
Полезная привычка — смотреть на код глазами атакующего: что будет, если отправить пустое значение, строку вместо числа, HTML в поле или чужой ID в запросе. Если ответ «ничего страшного» не подтверждён проверками в коде, значит место надо доработать.
Безопасный плагин — это не один фильтр, а цепочка маленьких проверок. Чем раньше вы начнёте валидировать, очищать и экранировать данные, тем меньше шансов, что баг станет уязвимостью.
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
Дорогие партнёры!
С августа и по 31 сентября в BETERA PARTNERS запускаем конкурс для всех партнёров.
Всё просто: чем больше квалифицированных FTD, тем выше ваше место в рейтинге.
🏆 Что можно забрать?
• Apple MacBook Air 15
• Apple iPad 11
• Apple Watch Series 11
• и другие призы для наших любимых партнёров❤️
Как участвовать?
⚡️ Быть или стать партнёром BETERA PARTNERS
⚡️ Подтвердить желание участвовать
⚡️ Приводить квалифицированные FTD в период с 05.08 по 31.09.2026
Пока другие думают — можно уже лить, зарабатывать и забирать свой подарок 😉
Почему партнёры выбирают BETERA PARTNERS:
⭐️ CPA / RevShare / Hybrid / Spend
⭐️ CPA от $150 — как на Tier-1 😉
⭐️ Собственный продукт с локальной лицензией
⭐️ Без KPI
⭐️ Прозрачные условия и быстрые выплаты
Следите за новостями в нашем Telegram-канале, а если нужна помощь с запуском или есть вопросы, залетайте в наш support и пишите нашим менеджерам, всё подскажем!
Betera Partners // Support🔥
@TLBetera
@KattiBetera
@DaniilTrafficBetera
С августа и по 31 сентября в BETERA PARTNERS запускаем конкурс для всех партнёров.
Всё просто: чем больше квалифицированных FTD, тем выше ваше место в рейтинге.
• Apple MacBook Air 15
• Apple iPad 11
• Apple Watch Series 11
• и другие призы для наших любимых партнёров
Как участвовать?
Пока другие думают — можно уже лить, зарабатывать и забирать свой подарок 😉
Почему партнёры выбирают BETERA PARTNERS:
Следите за новостями в нашем Telegram-канале, а если нужна помощь с запуском или есть вопросы, залетайте в наш support и пишите нашим менеджерам, всё подскажем!
Betera Partners // Support
@TLBetera
@KattiBetera
@DaniilTrafficBetera
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Я ненавижу арбитраж
Что за помойка?
Спросите вы, и будете правы.
Новое пространство успешных бизнесменов открылось пару дней назад. Канал сразу захватил арбитражный интернет. Миллион (!) активных и заряженных предпринимателей атаковали его подписками.
Создатель — самый успешный из них. Человек-розыгрыш, человек-споирт, человек-холст, человек-деньги — Евгений Иванов.
Ни одного бота не замечено. Лям. Все из сферы. Сам Дуров не обладает такой базой платежеспособной аудитории.
Немного о том, что обсуждается на канале:
— ахуенность админа (пост написан самим админом)
— ничтожность Affpapa
— техники минета в виде аффирмации
Учитывая предпочтения ЕЮ, можно спрогнозировать рубрики: сиськи (самого админа), кейсы (как правило, негативные), вайбкодинг и, конечно, новости с передовой арбитража.
🤡 —🤲 подписался
👍 — и скоко тебе заплатили, продажная ты придорожная путана?
Я ненавижу арбитраж |Чат😠
Спросите вы, и будете правы.
Новое пространство успешных бизнесменов открылось пару дней назад. Канал сразу захватил арбитражный интернет. Миллион (!) активных и заряженных предпринимателей атаковали его подписками.
Создатель — самый успешный из них. Человек-розыгрыш, человек-сп
Ни одного бота не замечено. Лям. Все из сферы. Сам Дуров не обладает такой базой платежеспособной аудитории.
Немного о том, что обсуждается на канале:
— ахуенность админа (пост написан самим админом)
— ничтожность Affpapa
— техники минета в виде аффирмации
Учитывая предпочтения ЕЮ, можно спрогнозировать рубрики: сиськи (самого админа), кейсы (как правило, негативные), вайбкодинг и, конечно, новости с передовой арбитража.
🤡 —
👍 — и скоко тебе заплатили, продажная ты придорожная путана?
Я ненавижу арбитраж |Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
Админ-панель плагина должна экономить время, а не путать даже опытного пользователя
Если интерфейс перегружен, плагин начинают отключать без разборов. В админке держите только то, что нужно для работы: настройки, статус, журналы, помощь. Остальное лучше спрятать в дополнительные вкладки или свернуть в блоки.
Для удобства важны три вещи:
— понятные названия разделов и кнопок без внутреннего жаргона;
— единый стиль полей, подсказок и сообщений об ошибках;
— предсказуемое поведение: действие в одном месте не должно ломать логику в другом.
Не заставляйте пользователя искать базовые функции в разных экранах. Если есть сохранение, сброс, проверка и импорт — их стоит группировать рядом. Хорошая админка отвечает на вопрос «куда нажать дальше» без лишних догадок. ⚙️
Перед публикацией пройдитесь по панели как новый администратор: можно ли понять назначение разделов за несколько секунд, видно ли, где ошибка, и не приходится ли открывать код, чтобы выполнить простую задачу. Если да — интерфейс уже работает на плагин, а не против него.
Если интерфейс перегружен, плагин начинают отключать без разборов. В админке держите только то, что нужно для работы: настройки, статус, журналы, помощь. Остальное лучше спрятать в дополнительные вкладки или свернуть в блоки.
Для удобства важны три вещи:
— понятные названия разделов и кнопок без внутреннего жаргона;
— единый стиль полей, подсказок и сообщений об ошибках;
— предсказуемое поведение: действие в одном месте не должно ломать логику в другом.
Не заставляйте пользователя искать базовые функции в разных экранах. Если есть сохранение, сброс, проверка и импорт — их стоит группировать рядом. Хорошая админка отвечает на вопрос «куда нажать дальше» без лишних догадок. ⚙️
Перед публикацией пройдитесь по панели как новый администратор: можно ли понять назначение разделов за несколько секунд, видно ли, где ошибка, и не приходится ли открывать код, чтобы выполнить простую задачу. Если да — интерфейс уже работает на плагин, а не против него.
База данных плагина ломается не из-за нагрузки, а из-за плохой схемы
Если плагин хранит данные в WordPress, не тащите всё в одну таблицу с кучей полей. Лучше сразу разделить сущности: настройки, события, связи, временные данные. Так проще писать запросы, обновлять структуру и не плодить хаос в метаполях.
Для каждой таблицы заранее продумайте:
— какие поля будут часто фильтроваться;
— где нужен индекс;
— какие данные можно хранить в post_meta, а какие нельзя;
— что удаляется вместе с плагином, а что должно остаться.
Частая ошибка — сохранять массивы и сложные структуры как одну строку. Это удобно на старте, но потом ломает поиск, сортировку и миграции. Если данные нужны для выборки, фильтрации или отчётов, храните их в нормализованном виде. Если это просто служебный кэш — отдельно и с понятной очисткой.
И ещё: всегда делайте миграции обратимыми. Добавили поле — предусмотрите его заполнение, удалили — проверьте, не остались ли зависимости в коде. Тогда база не станет слабым местом плагина, даже если проект вырастет в несколько раз.
Если плагин хранит данные в WordPress, не тащите всё в одну таблицу с кучей полей. Лучше сразу разделить сущности: настройки, события, связи, временные данные. Так проще писать запросы, обновлять структуру и не плодить хаос в метаполях.
Для каждой таблицы заранее продумайте:
— какие поля будут часто фильтроваться;
— где нужен индекс;
— какие данные можно хранить в post_meta, а какие нельзя;
— что удаляется вместе с плагином, а что должно остаться.
Частая ошибка — сохранять массивы и сложные структуры как одну строку. Это удобно на старте, но потом ломает поиск, сортировку и миграции. Если данные нужны для выборки, фильтрации или отчётов, храните их в нормализованном виде. Если это просто служебный кэш — отдельно и с понятной очисткой.
И ещё: всегда делайте миграции обратимыми. Добавили поле — предусмотрите его заполнение, удалили — проверьте, не остались ли зависимости в коде. Тогда база не станет слабым местом плагина, даже если проект вырастет в несколько раз.