Looking into WordPress Core, WordCamp Russia 2015

Sergey Biryukov
Sergey BiryukovWordPress Developer at Yoast.com
Почему стоит участвовать
в разработке WordPress
Сергей Бирюков
WordCamp Russia 2015
Обо мне
Сергей Бирюков
● Разработчик ядра WordPress
core.trac.wordpress.org
● Локализатор WP в России
ru.wordpress.org
sergeybiryukov.ru
@SergeyBiryukov
Зачем смотреть,
как устроен WordPress?
Как следить
за разработкой WordPress?
● make.wordpress.org/core/
● wp-svn
● wp-trac
Looking into WordPress Core, WordCamp Russia 2015
wp-admin/edit-form-advanced.php
wp-admin/includes/meta-boxes.php
wp-includes/default-filters.php
grep, ack, cmd-f и т.д.
PhpStorm 8
PHPXref
Codex
developer.wordpress.org
Looking into WordPress Core, WordCamp Russia 2015
add_action( 'publish_post' )
add_filter( 'all', function( $stuff ) {
echo '<code>' .
current_filter() .
'</code>';
return $stuff;
});
add_filter( 'gettext',
function( $new, $old, $domain ) {
if ( 'Set featured image' === $old ) {
if ( 'company' === get_post_type() ) {
$new = __( 'Set company logo', 'mydomain' );
}
}
return $new;
}, 10, 3 );
add_filter( 'admin_post_thumbnail_html',
function( $output, $post_id ) {
if ( 'company' === get_post_type( $post_id ) ) {
$output =
str_replace( __( 'Set featured image' ),
'Select / Upload a company logo', $output );
$output =
str_replace( __( 'Remove featured image' ),
'Remove company logo', $output );
}
return $output;
}, 10, 2 );
Для фильтров и действий
важен контекст
apply_filters( 'media_view_strings', $strings, $post )
remove_post_type_support()
Экран редактирования —
одна большая форма
<textarea name="excerpt" id="attachment_caption">
<?php echo $post->post_excerpt; ?>
</textarea>
Произвольные таксономии
add_action( 'save_post', function( $post_id, $post ) {
// Не забываем проверить nonce и привилегии
if ( isset( $_POST['my_tax_ui'] ) ) {
// array_map()
$terms = $_POST['my_tax_ui'];
wp_set_object_terms( $post_id, $terms, 'my_tax' );
} else {
wp_delete_object_term_relationships( $post_id, 'my_tax' );
}
}, 10, 2 );
Looking into WordPress Core, WordCamp Russia 2015
<select name="tax_input['my_tax'][]">
add_action( 'save_post', function( $post_id, $post ) {
// Не забываем проверить nonce и привилегии
If ( ! isset( $_POST['my_tax_ui'] ) ) {
wp_delete_object_term_relationships(
$post_id, 'my_tax'
);
}
}, 10, 2 );
<input type="hidden"
name="tax_input['my_tax'][]"
value="0" />
Looking into WordPress Core, WordCamp Russia 2015
add_rewrite_endpoint( 'export', EP_PAGES )
site.com/some-page/export/
site.com/some-page/export/json/
get_query_var( 'export' )
add_filter( 'request', function( $vars ) {
if ( isset( $vars['export'] )
&& empty( $vars['export'] ) ) {
$vars['export'] = '1';
}
return $vars;
});
get_query_var( 'export', null )
Сложные запросы
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'age',
'terms' => array( '5' ),
),
array(
'relation' => 'OR',
array(
'taxonomy' => 'academic_skills',
'terms' => array( 'reading', 'writing' ),
),
array(
'taxonomy' => 'skills',
'terms' => array( 'focus', 'flexibility' ),
),
),
)
term_id + taxonomy = term_taxonomy_id
sergeybiryukov.ru
@SergeyBiryukov
Спасибо! Вопросы?
1 of 37

Recommended

Everything You Need to Know About WP_Query, WordCamp Russia 2014 by
Everything You Need to Know About WP_Query, WordCamp Russia 2014Everything You Need to Know About WP_Query, WordCamp Russia 2014
Everything You Need to Know About WP_Query, WordCamp Russia 2014Sergey Biryukov
2.9K views68 slides
Contributing to WordPress, WordCamp Russia 2013 by
Contributing to WordPress, WordCamp Russia 2013Contributing to WordPress, WordCamp Russia 2013
Contributing to WordPress, WordCamp Russia 2013Sergey Biryukov
6.3K views27 slides
i18n for Plugin and Theme Developers, WordCamp Moscow 2016 by
i18n for Plugin and Theme Developers, WordCamp Moscow 2016i18n for Plugin and Theme Developers, WordCamp Moscow 2016
i18n for Plugin and Theme Developers, WordCamp Moscow 2016Sergey Biryukov
1.3K views30 slides
WordPress.org Under the Hood, WordCamp Moscow 2017 by
WordPress.org Under the Hood, WordCamp Moscow 2017WordPress.org Under the Hood, WordCamp Moscow 2017
WordPress.org Under the Hood, WordCamp Moscow 2017Sergey Biryukov
819 views30 slides
Вёрстка WordPress тем - WP Kharkiv Meetup #1 by
Вёрстка WordPress тем - WP Kharkiv Meetup #1Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1dima_kuzovlev
883 views37 slides
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ... by
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...PVasili
907 views24 slides

More Related Content

What's hot

Wordpress theme by
Wordpress themeWordpress theme
Wordpress themeАлександр Пермяков
6.9K views8 slides
инструкция по оптимизации сайтов на Drupal херени даниэл by
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлPVasili
1.3K views30 slides
Николай Сиварев "Приручая сайты" by
Николай Сиварев "Приручая сайты"Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"Yandex
384 views31 slides
Как мы ускоряли WebGL / Мстислав Живодков (2GIS) by
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Ontico
424 views35 slides
Изоморфный JavaScript — будущее уже здесь by
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьCodeFest
2.6K views45 slides
Knockoutjs на примере 2ГИС-Онлайн by
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн2ГИС Технологии
1.4K views80 slides

What's hot(20)

инструкция по оптимизации сайтов на Drupal херени даниэл by PVasili
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
PVasili1.3K views
Николай Сиварев "Приручая сайты" by Yandex
Николай Сиварев "Приручая сайты"Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"
Yandex384 views
Как мы ускоряли WebGL / Мстислав Живодков (2GIS) by Ontico
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Ontico424 views
Изоморфный JavaScript — будущее уже здесь by CodeFest
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
CodeFest2.6K views
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru) by Ontico
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Ontico3.1K views
WordPress Kitchen MeetUp Summer 2015 - Никита Галкин "Каноны современной разр... by WordCamp Kyiv
WordPress Kitchen MeetUp Summer 2015 - Никита Галкин "Каноны современной разр...WordPress Kitchen MeetUp Summer 2015 - Никита Галкин "Каноны современной разр...
WordPress Kitchen MeetUp Summer 2015 - Никита Галкин "Каноны современной разр...
WordCamp Kyiv319 views
Codeception UATestingDays by davertmik
Codeception UATestingDaysCodeception UATestingDays
Codeception UATestingDays
davertmik688 views
Python и Django – платформа для фрилансера by Alexander Koshelev
Python и Django – платформа для фрилансераPython и Django – платформа для фрилансера
Python и Django – платформа для фрилансера
Alexander Koshelev1.5K views
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс) by Ontico
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Ontico551 views
практическое использование модуля Panels богуцкий виктор by drupalconf
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий виктор
drupalconf1.5K views
Компоненты Фронтенда - HotCode 2013 by Andrey Listochkin
Компоненты Фронтенда - HotCode 2013Компоненты Фронтенда - HotCode 2013
Компоненты Фронтенда - HotCode 2013
Andrey Listochkin422 views
Modules and assembling of JavaScript (in russian) by Mikhail Davydov
Modules and assembling of JavaScript (in russian)Modules and assembling of JavaScript (in russian)
Modules and assembling of JavaScript (in russian)
Mikhail Davydov966 views
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса" by Yandex
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Yandex2.1K views
Фронтенд разработка без боли by Anton Piskunov
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
Anton Piskunov3.1K views
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium by SQALab
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
SQALab9K views

Viewers also liked

Моделирование контента в WordPress by
Моделирование контента в WordPressМоделирование контента в WordPress
Моделирование контента в WordPressAnna Ladoshkina
3.4K views19 slides
Практическая доступность с WordPress by
Практическая доступность с WordPressПрактическая доступность с WordPress
Практическая доступность с WordPressAnna Ladoshkina
1.5K views24 slides
Managing a Local WordPress Community, WordCamp Europe 2016 by
Managing a Local WordPress Community, WordCamp Europe 2016Managing a Local WordPress Community, WordCamp Europe 2016
Managing a Local WordPress Community, WordCamp Europe 2016Sergey Biryukov
993 views31 slides
Composer и разработка сайтов на WordPress by
Composer и разработка сайтов на WordPressComposer и разработка сайтов на WordPress
Composer и разработка сайтов на WordPressAnna Ladoshkina
1.2K views23 slides
Ведение бизнеса на основе WordPress by
Ведение бизнеса на основе WordPressВедение бизнеса на основе WordPress
Ведение бизнеса на основе WordPressAndrey Ovsyannikov
1.8K views30 slides
Using Composer to create manageable WordPress websites by
Using Composer to create manageable WordPress websitesUsing Composer to create manageable WordPress websites
Using Composer to create manageable WordPress websitesAnna Ladoshkina
1.2K views37 slides

Viewers also liked(7)

Моделирование контента в WordPress by Anna Ladoshkina
Моделирование контента в WordPressМоделирование контента в WordPress
Моделирование контента в WordPress
Anna Ladoshkina3.4K views
Практическая доступность с WordPress by Anna Ladoshkina
Практическая доступность с WordPressПрактическая доступность с WordPress
Практическая доступность с WordPress
Anna Ladoshkina1.5K views
Managing a Local WordPress Community, WordCamp Europe 2016 by Sergey Biryukov
Managing a Local WordPress Community, WordCamp Europe 2016Managing a Local WordPress Community, WordCamp Europe 2016
Managing a Local WordPress Community, WordCamp Europe 2016
Sergey Biryukov993 views
Composer и разработка сайтов на WordPress by Anna Ladoshkina
Composer и разработка сайтов на WordPressComposer и разработка сайтов на WordPress
Composer и разработка сайтов на WordPress
Anna Ladoshkina1.2K views
Ведение бизнеса на основе WordPress by Andrey Ovsyannikov
Ведение бизнеса на основе WordPressВедение бизнеса на основе WordPress
Ведение бизнеса на основе WordPress
Andrey Ovsyannikov1.8K views
Using Composer to create manageable WordPress websites by Anna Ladoshkina
Using Composer to create manageable WordPress websitesUsing Composer to create manageable WordPress websites
Using Composer to create manageable WordPress websites
Anna Ladoshkina1.2K views
i18n for Plugin and Theme Developers, WordCamp Milano 2016 by Sergey Biryukov
i18n for Plugin and Theme Developers, WordCamp Milano 2016i18n for Plugin and Theme Developers, WordCamp Milano 2016
i18n for Plugin and Theme Developers, WordCamp Milano 2016
Sergey Biryukov1.3K views

Similar to Looking into WordPress Core, WordCamp Russia 2015

TestGuy - эмулируем вашего тестировщика by
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаdavertmik
709 views26 slides
Yii2 by
Yii2Yii2
Yii2Noveo
662 views32 slides
всплывающее окно при закрытии сайта by
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта Olga Pirozhenko
196 views4 slides
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п... by
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...WordCamp Kyiv
307 views35 slides
WordPress auto-install: просто о сложном by
WordPress auto-install: просто о сложномWordPress auto-install: просто о сложном
WordPress auto-install: просто о сложномVladimir Samoletov
627 views35 slides
Страх и ненависть в исходном коде by
Страх и ненависть в исходном кодеСтрах и ненависть в исходном коде
Страх и ненависть в исходном кодеKolya Korobochkin
513 views23 slides

Similar to Looking into WordPress Core, WordCamp Russia 2015(20)

TestGuy - эмулируем вашего тестировщика by davertmik
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщика
davertmik709 views
Yii2 by Noveo
Yii2Yii2
Yii2
Noveo662 views
всплывающее окно при закрытии сайта by Olga Pirozhenko
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта
Olga Pirozhenko196 views
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п... by WordCamp Kyiv
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...
WordCamp Kyiv307 views
WordPress auto-install: просто о сложном by Vladimir Samoletov
WordPress auto-install: просто о сложномWordPress auto-install: просто о сложном
WordPress auto-install: просто о сложном
Vladimir Samoletov627 views
Страх и ненависть в исходном коде by Kolya Korobochkin
Страх и ненависть в исходном кодеСтрах и ненависть в исходном коде
Страх и ненависть в исходном коде
Kolya Korobochkin513 views
Первые шаги после установки WordPress by Darja Kruzhkova
Первые шаги после установки WordPressПервые шаги после установки WordPress
Первые шаги после установки WordPress
Darja Kruzhkova2.7K views
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1) by ZFConf Conference
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf Conference51.1K views
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС) by Ontico
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico2.5K views
Архитектура кода нового 2ГИС Web API или куда мы дели MVC by DevDay
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay1.1K views
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone by it-people
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
it-people259 views
Pycon Russia 2013 - Разработка через тестирование в Python и Django by Ilya Shalyapin
Pycon Russia 2013 - Разработка через тестирование в Python и DjangoPycon Russia 2013 - Разработка через тестирование в Python и Django
Pycon Russia 2013 - Разработка через тестирование в Python и Django
Ilya Shalyapin489 views
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn... by it-people
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
Илья Шаляпин, Евгений Генералов: Разработка через тестирование в Python и Djn...
it-people1.9K views
Разработка через тестирование в Python и Django #pyconru by JetStyle
Разработка через тестирование в Python и Django #pyconruРазработка через тестирование в Python и Django #pyconru
Разработка через тестирование в Python и Django #pyconru
JetStyle4.9K views
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils by WordCamp Kyiv
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript UtilsWP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
WordCamp Kyiv961 views
Alexander manuhin selenium_php_v2.0 by matroskin1980
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
matroskin19804.4K views
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views... by Viktor Likin
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
Viktor Likin307 views
Основые безопасности WordPress by Konstantin Kovshenin
Основые безопасности WordPressОсновые безопасности WordPress
Основые безопасности WordPress
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type... by Igor Sazonov
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Igor Sazonov1.4K views
Web весна 2012 лекция 7 by Technopark
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7
Technopark552 views

Looking into WordPress Core, WordCamp Russia 2015