Photos from Russia’s first WordPress Translation Day

One day ago I wrote about impressions after WordPress Translation Day in Moscow. And today Setka posted photos from this event. Check it out! Yay!

Advertisements

Global WordPress Translation Day in Moscow

In past weekend I had the opportunity to join Global WordPress Translation Day in Moscow, Russia. It was a great weekend with associates and also an occasion to see the attendees, who have also visited WordCamp Moscow 2016, again.

I’m very happy that Setka (where I’m currently working) allows organizers to use our big and lovely editorial office in downtown for WordPress meetups. It’s pretty unusual to see our office empty 🙂

And I’m also exited to see my co-workers and friends at this weekend days (Hi Katya, Petya and Roma). And discuss some product stuff after WordPress meeting.

During this meeting we tried to translate Maker theme and Members plugin. Setka was so friendly and ordered for us some pizza 🍕.

Dmitriy had a chat session with John in realtime to show us to the world 🌎. You can find us from 12:37 (and me at background :).

Глобальный день перевода WordPress в Москве

Why you should never use wp-admin named folders in your plugin or theme

Why you should never use wp-admin named folders in your plugin or theme

Working on each plugin I always want to create a simpler and clean folders and files structure which everyone can understand in just one glance. It’s a main goal for all developers — creating simply and reusable code which doing some amazing work inside your products. Isn’t it?

I’ve been going a long way in attempts to create a solid files structure which perfect fits for every product I’m working on. It’s a good idea to write just a simply fancy code in single project. Even better to write a code using certain standards.

Unfortunately now WordPress doesn’t have established recommendations for plugins structure. The themes have a better equipment. Usually the themes shouldn’t have any hardcoded logic. I think that themes should be just a templates which defines a views, not a business logic or something. Or maybe not. Every single product have different purposes and environment. I don’t think that this world have just a one single solution which is right.

Now we have many plugins with absolutely different files structure. And understanding the logic of that plugin is like the conquest of Everest. 🙂

Jetpack plugin files

Jetpack plugin files

In my projects I have come to the conclusion that a folder called wp-admin is the best name for the folder with files which relates to WordPress wp-admin pages (admin screens). But it’s not the best name for this type of folder.

After running a wp core verify-checksums I was surpised with output in console.

wp core verify-checksums
...
Warning: File should not exist: wp-content/plugins/setka-editor/twig-templates/wp-admin/settings/auth/token.html.twig
Warning: File should not exist: wp-content/plugins/setka-editor/twig-templates/wp-admin/settings/common/checkboxes-in-fieldset.html.twig
Warning: File should not exist: wp-content/plugins/setka-editor/twig-templates/wp-admin/settings/common/template.html.twig
Success: WordPress install verifies against checksums.

Ow! It looked not as I expected. In trying to understand and explain this behaviour I’m stuck in WP-CLI source code. And the answer in Core_Command->get_wp_core_files(). So I’ve just renamed my folder from wp-admin to admin.

Also be avoid name your folders as wp-includes or any other WordPress “reserved” names. Other products may confused with this names.

P. S. It seems that I need more to write about plugin structure in next posts.

Как я провел лето

Тут могло быть написано “как я провел лето”, но правдой было бы “как я провел последний почти год”. Психанул и перерисовал все макеты 🤓 На скриншоте незаметно, но мне очень нравится символ тильды между Category и Page 1.

Санитайзинг по-русски

«Санитайзинг» по-русски

На совместном ужине со спикерами WordCamp Moscow 2016 мы, кажется, обсуждали о том, как называть некоторые вещи по-русски: валидация, верификация… Самым сложным англицизмом оказался санитайзинг. Озвучивались разные варианты, но все как-то не очень подходили и вызывали дополнительные вопросы, потому что не полностью отражали изначальной сути.

Сегодня я случайно полез на php.net за очередной порцией документацией — сайт случайно открылся на русском языке и я увидел санитазийнг! Вернее не «санитайзинг», а «нормализацию значений». Вот оно!

Sanitizing = Нормализация значения

Приглашение на WordCamp

Приглашаю всех на WordCamp в Москве. Так получилось, что я буду выступать там — расскажу про Vagrant, VirtualBox и VVV (ну, и по мелочи затрону: Git, Amazon Web Services).

2016.moscow.wordcamp.org

Посетителям обещают много разных докладов и неформальное общение. А также футболки с логотипом WordPress и покормят! 🙂

Почему не стоит подписываться на сайты в соц сетях

Иногда, мы подписываемся на страницы каких-то магазинов в соц. сетях. Это может показаться удобным — мониторить распродажи и другие обновления. Но однажды вступив в какой-нибудь паблик (или группу) вы становитесь потенциальной жертвой разного рода спамеров и лохотронщиков.

Для любого разводилы нет ничего лучше, чем таргетированная аудитория, которой можно отправить миллион сообщений и сделать денег по быстрому. Например, я подписался на паблик Asos-а, а через некоторое время ко мне в личных сообщениях приходит сообщение:

Добрый день, увидел, что вы на асосе покупаете [сокращенная_ссылка_в_goo.gl] подскажите, это самый дешевый раздел обуви на асосе или есть разделы с более выгодными ценами?

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

И это самый милый и не опасный вид спама. По классике могут отправить на какие-нибудь сайты, похожие на Asos с парой лишних букв в домене, запросить данные банковской карты…

Правила

  1. Никогда не переходить по ссылкам, которые вам присылают — от кого бы они не были. Вашего друга могли взломать или просто он установил какое-то «полезное» расширение для браузера, которое дополнительно еще и спам отправляет.
  2. Все ссылки, которые вы не вводите сами нужно открывать в режиме Инкогнито в браузере.
  3. Не использовать никаких расширений для браузера. Расширения никто не проверяет, даже если они в магазине Google. Поэтому там может быть абсолютно любой код, который будет исполняться на всех сайтах, которые вы посещаете.
  4. Никому вообще никогда и нигде не сообщать данные о своей банковской карте 🙂 Если магазин хороший, то они выстроят бизнес-процессы так, чтобы данные о картах вводились только на сайте.

Рассуждения

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

Часть людей, конечно же, подумает про себя или даже посчитает должным написать сообщение мне, что-то в духе «лох не мамонт», «сами виноваты». Но подумайте вот о чем — неужели вы серьезно считаете, что обманывать это нормально? И в ситуациях, когда кто-то оказался слишком глуп и поверил, можно говорить «сам виноват»? Настолько наплевательски относиться к другим людям — как минимум странно.

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

Новые инструменты. Symfony Validator

Я хотел написать про кучу нового и интересного с чем удалось познакомиться и какие мысли пришли в голову — но это много. Поэтому разобьем все на несколько постов. Первый (этот) пост посвящен короткому, но знакомству, с Symfony Validator.

На прошлой неделе я разобрался с работой Symfony Validator. Это потрясающая библиотека (дополнение) позволяет проверять любые типы данных на какие-либо соответствия. Если коротко, то проверка чего угодно сводится к паре дополнительных строчек. И не нужно городить очередную реализацию какой-нибудь формы в 101 раз.

Библиотека хороша тем, что работает где угодно, даже в WordPress — для этого ей ничего не нужно. Это большой плюс Symfony — весь фреймворк по сути набор небольших модулей (symfony.com/components), которые умеют работать независимо друг от друга (может скоро и Doctrine захочется прикрутить к WordPress? — пока не было необходимости). Я использую все это для проверки настроек большого плагина (энтерпрайз и все такое).

Ниже приведен простой пример использования Validator, но он полностью рабочий (должен быть, писал в блокнотике по памяти). Конечно, все это подойдет лишь для демонстрационного «стенда». Для нормального применения пришлось написать с десяток новых классов, «задокументировать» все это в интерфейсах и прочее. Но результат того явно стоил.

// Создаем валидатор
$validator = Validation::createValidator();

// Входные данные
$input_data = array(
	// Значение должно быть ссылкой
	'url' => 'http://korobochkin.com/',

	// Список чего-либо
	'post_types' => array( 'post', 'page' )
);
// Создаем правила для проверки массива
$constraints = new Constraints\Collection( array(
	'url' => array(
		// Не должно быть пустым
		new Constraints\NotBlank(),
		// Должно содержать ссылку
		new Constraints\Url()
	),
	'post_types' => new Constraints\Choice( array(
		// Доступные (разрешенные) варианты (опции)
		'choices' => array_values( get_post_types() ),
		// Может быть выбрано сразу несколько
		'multiple' => true,
		// Строгая проверка типов для брони :)
		'strict' => true
	) )
) );

// Проверяем
$errors = $validator->validate( $input_data, $constraints );

if( count( $errors ) === 0 ) {
	// Ошибок нет, переменная $input_data прошла проверку
}
else {
	// Есть ошибки при валидации
}

Strange Little Birds

Это один из тех альбомов (и музыка, собственно), которая по началу никак не зацепляет или даже не нравится, но через какое-то время начинаешь слушать снова и снова. Весь альбом Strange Little Birds потрясающий. А пока пара треков для превью.