DevDocs - пишу в процессе разработок

Как создавать плагины для BuddyPress? Часть 1 (pdf, en_EN)

Некоторое время назад у меня было желание написать серию статей о том, как создавать плагины для . Но подобный требует очень много времени (естественно, если есть желание сделать его качественным), а вот со временем проблемки. Потому я откладывал с надеждой, что соберусь когда-нибудь.

И вот несколько дней назад один из -BuddyPress разработчиков по имени @imath написал первую часть подобного мануала на французском языке, что уже само по себе круто.

Но ведь с французским у большинства людей гораздо хуже, чем с английским. И спустя несколько дней автор выложил и английский .

Скачать у автора или с моего сайта по ссылке ниже:

Скачать на CosyDale.com

На мой взгляд получился отличнейший туториал с описанием того, что/как/почему работает и последовательности действий. Крайне рекаомендую почитать всем тем, кто хочет/планирует начать писать BuddyPress плагины, но все еще не знает, с чего начать.

Chrome extension: отображение баланса с помощью Envato Marketplaces Balance

Ради спортивного интереса (и дополнительного опыта) я начал продавать 2 своих BuddyPress плагина на CodeCanyon. Продажи есть, что радует, но их отслеживание чуток утомляет.

Чтобы посмотреть, сколько у вас на счету, надо зайти на страницу marketplace (и при этом быть авторизованным). Делать это по несколько раз в день (открыть страницу, авторизоваться, посмотреть баланс, выйти) мне стало лень, и я начал искать пути упрощения этого процесса. Нашел Marketplace API, которое позволяет делать запросы и получать необходимые данные. Там все достаточно прозрачно.

Принимая во внимание мой маленький опыт написания Extension, я решил написать еще один, который будет делать лишь одну вещь: показывать мне текущий баланс. Вот как я себе это придумал и реализовал:

Chrome Extension - Envato browser icon

В самом начале я вшил необходимые настройки прямо в , но потом понял, что это не кошерно и быстренько сваял страницу указания необходимого логина пользователя и его API кода. Выглядит это вот так:

Chrome Extension - Envato Settings

Теперь Chrome Extension Marketplaces Balance стал универсальным и я его предлагаю вам. Кому нужно – качайте и пользуйтесь (файл открывать с помощью хрома).

Скачать на CosyDale.com

Принцип работы расширения прост:

  • идет API каждые полчаса
  • поверх иконки накладывается сумма баланса
  • так как есть ограничение в 4 символа, то я реализовал такую логику (везде вырезаются центы)
    • если сумма от 0 до 9999 – показываем ее (1125)
    • если сумма от 10000 до 99999 – показываем десятки тысяч (12k+)
    • если сумма от 100000 до 999999 – показываем сотни тысяч (112k)
    • если сумма больше 1000000 – показываем только миллионы (2M+)
  • все делается с помощью
  • при клике на иконку будет принудительно отправлен запрос, который обновит сумму поверх иконки и покажет обычный alert с текстом суммы баланса (на этот раз – вместе с центами)
  • не работает оффлайн, так как нужен интернет для опроса API, в этом случае и при прочих ошибках вместо суммы будет показываться специальный текст – n/a
Dev: Плагин статистики профилей пользователей #2

Несколько дней назад я опубликовал запись о том, что веду работу над новым интересным плагинов, так называемом (мной) BP Profiles Stat. Со времени того , я провел внутреннюю оптимизацию, добавил поддержку всех типов данных профиля (кроме textarea – ее нет смысла даже пытаться добавить).

Что получилось – вы можете увидеть на очередном видео ниже.

Я, честно говоря, удивлен отсутствию комментариев к предыдущей , и потому решил продублировать свой вопрос снова: Есть ли у вас какие-либо по дальнейшему функционалу? Неужели никому не нужна подобная ?

UPD: Чуток поработал с внешним видом графика, вот что вышло:

Dev: Плагин статистики профилей пользователей #1

Работа над плагином Profiles Stat () началась совсем недавно, пока сделан лишь костяк кода. Тем не менее, уже есть, что показать.

Я пока не знаю, на каких условиях буду распространять данный . Для бесплатного – мне слишком много времени придется потратить на его причесывание. Так что задумываюсь, чтобы сделать его платным, но дешевым – и все смогут (если захотят) его себе позволить.

Какие у вас есть ?

Как сгенерировать .po/.mo файлы для перевода тем или плагинов

Достаточно часто спрашивают меня – как же самостоятельно перевести тему или ?

Для начала необходимо проверить, что:

  1. тема или плагин поддерживают
  2. у вас установлен PoEdit
  3. вы знаете как английский, так и язык, на который собираетесь переводить

Если с первым пунктом все просто – или поддерживает, или нет (тогда напишите автору, пусть исправит). Со вторым – можно скачать, если нет. То с третьим пунктом я вам помочь не смогу – и можете смело перестать читать эту статью :)

Последовательность действий

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

Далее я открываю (уже давным давно скачаный и установленный) и создаю файл-носитель перевода с расширением po. Какие данные я вношу туда – прекрасно видно на .

PoEdit

После этого перехожу к самой нудной части – непосредственно к переводу.

Установите Adobe Flash, чтобы увидеть флеш-видео.

Хак: визуальный редактор только для конкретных записей

Если у вас вдруг появилась необходимость сохранять html страницы/ в админке , но вы испытываете трудность от того, что расширенный редактор вырезает определенный код из исходного при переходе на него с режим HTML, то следующий вам поможет это исправить :)

Честно говоря, достаточно редко такое необходимо, но тем не менее…

В общем, открываете functions. шаблона или главный файлы своего/любого плагина и вставляете следующий код:

add_action('init', 'hack_visual_editor');
function hack_visual_editor(){
    if( is_admin() && !empty($_GET['post']) && $_GET['action'] == 'edit' ){
        $slug = get_post_field( 'post_name', $_GET['post'] );
        if( $slug == 'sitemap' ) {
            global $current_user, $wp_rich_edit;
            $current_user->data->rich_editing = 'false';
            $wp_rich_edit = false;
        }
    }else{
        return false;
    }
}

Как видите, все достаточно просто – мы обманываем WordPress, заставляя его думать, что на текущей странице (в данном случае на странице редакторования записи со слагов 'sitemap') для текущего пользователя запрещен режим Визуального редактора.

Естественно, можно запрещять по любому параметру (например, ID или названию поста), для этого вам надо отредактировать строчку if( $slug == 'sitemap' ) {.

Ускорение ajax запросов в WordPress

 Работая над своим плагином Group Chat (), я столкнулся с проблемами производительности запросов – она оставляет желать лучшего. К сожалению, достаточно тяжело быстро и бесплатно внедрить технологию, которая не будет так нагружать ваш сервер, так что пришлось искать пути ускорения запросов в .

Собственно, вариант, который я вам предлагаю, на самом деле известен достаточно давно, просто нигде толком не описан. Фактически у нас 2 альтернативы:

  1. использование движка WP для обработки всех ajax запрос (и тут описано, как это делать правильно);
  2. использование своего собственного голого файла, в котором мы делаем все, что нам нужно.

Первый вариант хорош, когда нужно получить доступ к WordPress API (все его плагины, расширения, темы, классы – вроде $wpdb для взаимодействия с базой). Но у него огромный минус – при каждом ajax запросе вы полностью загружает весь движок – а это минимум 25Mb памяти сервера + постоянная чрезмерная (в сравнении с необходимостью) нагрузка.

Второй варинт как раз наоборот – отлично показывает себя по скорости и потребляемой памяти (все зависит от вашего кода, может быть всего несколько миллисекунд и пару килобайт соответственно). Но минус в том, что вы полностью изолированы от WP – нет ничего, что с ним связано, даже данных для коннекта к базе (по-крайней мере, получить их уже маленькая проблемка). Именно поэтому 99% всех шаблонов/плагинов используют первый вариант.

Ну а что, если нам все же нужен интерфейс работы с базой, к примеру, но не нужен весь шлак в виде тем, плагинов и прочего? Вот в таком случае я предлагаю вам объединить указанные способы.

Что мы делаем:

1) создаем файл ajax.php (например) в нужно нам месте – если свой сайт, не , то можно даже в корне сайта, если – то в папке плагина было бы логично его разместить;

2) прописываем в начале этого файла:

define('SHORTINIT', 'faster');

3) далее подключаем файл wp-config.php (к примеру, указанный в пункте 1 файл у нас лежит в корне сайта):

require('./wp-config.php');

Это все. Мы загрузили WP – но далеко не весь. Из его 20 метров только 2 оказались в памяти, повторюсь – нет таксономии, почти всего из папки /wp-includes/, локализации, нет всей папки /wp-content/. Зато у нас есть и работает глобальный класс $wpdb. И некоторые другие вещи, которые можно использовать.

Вывод

Все запросы будут работать в 10 раз быстрее (проверено тестами), потребляемая такого обрезанного WP будет на уровне 2-2,2 Mb. Что весьма неплохо, я вам скажу. И это без серверного кеширования, без кеширования php.

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

Дерзайте! И не забывайте делиться идеями и/или замечаниями!

Блокировка части спам-регистраций в WordPress MS

Со мной поделился информацией один владелец зарубежной социальной сети. У него была проблема с огромным количеством спам-регистраций. Он выделил домены, которые использовались для регистрации, и любезно предоставил этот список мне. Их всего 5 штук, но они могу здорово облегчить вам администрирование вашей сети.

Итак, перейдите на страницу /wp-admin/network/settings. и в поле “Запрещённые домены для e-mail” введите следующее:

  • 163.com
  • 21cn.com
  • qq.com
  • sohu.com
  • tom.com

Я думаю, актуально будет для тех, у кого есть неплохой зарубежный трафик.

Также советую прочитать вот эту запись – Защита от регистрации спамеров и ботов.

Требуются WordPress программисты в Харькове

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

Требования:

  • (средний и выше), (базовый и выше);
  • знание WordPress не понаслышке (умение пользоваться WP хуками и фильтрами; знание, что такое Кодекс);
  • неплохой разговорный/письменный только плюс, но не критично;
  • проживание в Харькове, Украина, или в окрестностях или готовность переехать сюда.

Необходимые качества:

  • ответственность;
  • гибкость;
  • внимательность;
  • желание и умение учиться.

С моей стороны:

  • стабильная ЗП, которая пропорциональна вашему вкладу в работу;
  • разнообраные проекты (как маленькие и быстрые, так и долгосрочные);
  • помощь в виде советов/подсказок;
  • обучу работе с (также нужен разработчик);

Отличный коллектив, замечательный офис. ЗП по результатам собеседования. Связь со мной через страницу Контакт или skype:slaffik_ua.

2 полезных сервиса от Google и WordPress.com

Мне довольно часто приходится вставлять скриншоты сайтов к себе в . Чтобы это сделать, я запускаю утилиту Jing, выделяю нужную область открытой страницы и сохраняю полученный скриншот на компе, после чего загружаю его сюда и вставляю в запись. Достаточно длинная процедура, особенно если надо сделать просто скрин главной страницы сайта (или любой другой) без выделения и подсветки определенных областей.

Так вот для ускорения этой процедуры, вы можете использовать бесплатный сервис от .com. Он позволяет по ссылке передать url страницы-цели и ширину, а ответом вам будет свежий сайта. Удобно?

Пример кода:

<img class="snapshot" src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fcosydale.com%2F?w=590" alt=".com" />

Демо:

CosyDale.com

Меняете параметры: cosydale.com, 590 и CosyDale.com на свои собственные.


Второй забавной и порой полезной штукой является возможность получить сайта “на лету”. Его можно также вставить в текст, и будет выглядить, как красивая внешняя ссылка на мой сайт CosyDale.com CosyDale.com.

Вот :

<img class="favicon" src="http://www..com/s2/favicons?domain=cosydale.com" alt="CosyDale.com" />

Меняете только путь к сайту (лучше к главной странице) и содержимое alt тега.

Открыть Нечто !