SlideShare uma empresa Scribd logo
1 de 58
Baixar para ler offline
Как опубликовать
свою тему в директорию
WordPress
Дмитрий Майоров / www.themepatio.com
WordCamp Moscow 2016
themepatio.com/themes/maker
Зачем это делать?
Зачем выпускать тему
-- Обратная связь
-- Прокачать свои навыки
-- Делиться хорошо
1. GPL
Принципы лицензии
-- Использовать для любых целей
-- Изучать исходный код
-- Изменять исходный код
-- Распространять без ограничений
Как сделать тему
GPL-friendly?
/*
Theme Name:		Maker
Author:						ThemePatio
Text Domain:	maker
License:					GNU GPL v2 or later
License URI:	http://www.gnu.org/licenses/gpl-2
Указать лицензию в style.css
=== Maker ===
Contributors:	iamdmitrymayorov
Version:						0.2.0
License:						GNU GPL v2 or later
License URI:		http://www.gnu.org/licenses/gpl-
Tags:									black, gray, red, white, dark, l
Указать лицензию в readme.txt
Typicons
Author: Stephen Hutchings
License: SIL (http://scripts.sil.org/OFL)
URL: http://typicons.com/
Используйте GPL ресурсы
Chair & Table
Author: Jordan Sanchez
Licence: CC0 1.0
URL: https://unsplash.com/photos/KyB-Eo4xS
Используйте GPL картинки
Проверить совместимость
www.gnu.org/licenses/license-list.en.html
#GPLCompatibleLicenses
2. Не начинайте с нуля
Underscores (_s)
underscores.me
Components
components.underscores.me
3. Требования
<head>
...
<script src=’theme.js’></script>
...
</head>
3.1 Не встраивайте стили и скрипты
wp_enqueue_script(
		‘maker-custom’,
		get_template_directory_uri() .‘theme.js’,
);
functions.php
wp_enqueue_script(	‘jquery’ );
functions.php
Список библиотек и инструментов
в ядре WordPress
developer.wordpress.org/reference/functions/
wp_enqueue_script/
3.2 Используйте префиксы
-- Функции
-- Классы
-- События и фильтры
-- Глобальные переменные
-- Записи в БД
function output() {
// Код функции.
}
Плохой пример
function maker_entry_meta() {
// Код функции.
}
Хороший пример
3.3 Валидация ввода,
экранирование вывода
5 000 000 / 50 = 100 000 руб/м2
договорн. / 50 = ?
sanitize_text_field( $input )
Валидация ввода
$wp_customize->add_setting( ‘footer’, array(
		‘sanitize_callback’ => ‘sanitize_text_field’,
) );
Валидация ввода
esc_html( $output );
Экранирование вывода
// Get the data.
$prefix_name = get_theme_mod( ‘footer’ );
// Escape as a late as possible and display.
echo esc_html( $prefix_name );
Экранирование вывода
Подробнее
codex.wordpress.org/Data_Validation
3.4 Переводимые строки
echo ‘Комментарии’;
Шаблон для клиента
echo __( ‘Comments’, ‘themeslug’ );
Тема для директории
_e( ‘Comments’, ‘themeslug’ );
Тема для директории
esc_html_e( ‘Comments’, ‘themeslug’ );
Тема для директории
Подробнее об I18N
codex.wordpress.org/I18n_for_WordPress_Developers
3.5 Территория тем и плагинов
Подробнее о требованиях
make.wordpress.org/themes/handbook/
review/required
4. Учитесь у других
4.1. Изучайте стандартные темы
5. Тестирование
define( ‘WP_DEBUG’, true );
5.1 wp-config.php
5.2 Theme Check
wordpress.org/plugins/theme-check
5.3 Codesniffer with WPCS
github.com/WordPress-Coding-Standards/
WordPress-Coding-Standards
5.4 Theme Unit Test
codex.wordpress.org/Theme_Unit_Test
5.5 Monster Widget
wordpress.org/plugins/theme-check
5.6 Настоящий контент
6. Учавствуйте в
проверке тем
7. Не усложняйте
Вопросы?
Дмитрий Майоров / www.themepatio.com
WordCamp Moscow 2016

Mais conteúdo relacionado

Destaque

Learning by Doing: 10 Lessons in Pushing your WordPress Development Skills
Learning by Doing: 10 Lessons in Pushing your WordPress Development SkillsLearning by Doing: 10 Lessons in Pushing your WordPress Development Skills
Learning by Doing: 10 Lessons in Pushing your WordPress Development SkillsSarah Moyer
 
WordCamp Denmark 2016: How to get (more) involved with WordPress
WordCamp Denmark 2016: How to get (more) involved with WordPressWordCamp Denmark 2016: How to get (more) involved with WordPress
WordCamp Denmark 2016: How to get (more) involved with WordPressRocío Valdivia
 
VVV. Сервер для WordPress-разработчика
 VVV. Сервер для WordPress-разработчика VVV. Сервер для WordPress-разработчика
VVV. Сервер для WordPress-разработчикаKolya Korobochkin
 
WordPress en la Educación - WordCamp Bilbao - Fernando Tellado
WordPress en la Educación - WordCamp Bilbao - Fernando TelladoWordPress en la Educación - WordCamp Bilbao - Fernando Tellado
WordPress en la Educación - WordCamp Bilbao - Fernando TelladoFernando Tellado
 
Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016
Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016
Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016Rocío Valdivia
 
Dockerize WordPress on Mac/Windows
Dockerize WordPress on Mac/WindowsDockerize WordPress on Mac/Windows
Dockerize WordPress on Mac/WindowsKite Koga
 
Пожиратели памяти в WordPress
Пожиратели памяти в WordPressПожиратели памяти в WordPress
Пожиратели памяти в WordPressKonstantin Kovshenin
 
Podcast Presentation for WordCamp.
Podcast Presentation for WordCamp.Podcast Presentation for WordCamp.
Podcast Presentation for WordCamp.Gary Leland
 
What Really Matters in WordPress SEO
What Really Matters in WordPress SEOWhat Really Matters in WordPress SEO
What Really Matters in WordPress SEORebecca Gill
 
Friendlier, Safer WordPress Admin Areas
Friendlier, Safer WordPress Admin AreasFriendlier, Safer WordPress Admin Areas
Friendlier, Safer WordPress Admin AreasCliff Seal
 
Word press for lazy people
Word press for lazy peopleWord press for lazy people
Word press for lazy peopleJerrett Farmer
 

Destaque (11)

Learning by Doing: 10 Lessons in Pushing your WordPress Development Skills
Learning by Doing: 10 Lessons in Pushing your WordPress Development SkillsLearning by Doing: 10 Lessons in Pushing your WordPress Development Skills
Learning by Doing: 10 Lessons in Pushing your WordPress Development Skills
 
WordCamp Denmark 2016: How to get (more) involved with WordPress
WordCamp Denmark 2016: How to get (more) involved with WordPressWordCamp Denmark 2016: How to get (more) involved with WordPress
WordCamp Denmark 2016: How to get (more) involved with WordPress
 
VVV. Сервер для WordPress-разработчика
 VVV. Сервер для WordPress-разработчика VVV. Сервер для WordPress-разработчика
VVV. Сервер для WordPress-разработчика
 
WordPress en la Educación - WordCamp Bilbao - Fernando Tellado
WordPress en la Educación - WordCamp Bilbao - Fernando TelladoWordPress en la Educación - WordCamp Bilbao - Fernando Tellado
WordPress en la Educación - WordCamp Bilbao - Fernando Tellado
 
Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016
Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016
Cómo involucrarte (más) con WordPress - WordCamp Bilbao 2016
 
Dockerize WordPress on Mac/Windows
Dockerize WordPress on Mac/WindowsDockerize WordPress on Mac/Windows
Dockerize WordPress on Mac/Windows
 
Пожиратели памяти в WordPress
Пожиратели памяти в WordPressПожиратели памяти в WordPress
Пожиратели памяти в WordPress
 
Podcast Presentation for WordCamp.
Podcast Presentation for WordCamp.Podcast Presentation for WordCamp.
Podcast Presentation for WordCamp.
 
What Really Matters in WordPress SEO
What Really Matters in WordPress SEOWhat Really Matters in WordPress SEO
What Really Matters in WordPress SEO
 
Friendlier, Safer WordPress Admin Areas
Friendlier, Safer WordPress Admin AreasFriendlier, Safer WordPress Admin Areas
Friendlier, Safer WordPress Admin Areas
 
Word press for lazy people
Word press for lazy peopleWord press for lazy people
Word press for lazy people
 

Semelhante a Как опубликовать свою тему в директорию WordPress

Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerLEDC 2016
 
About Open Source Licenses
About Open Source LicensesAbout Open Source Licenses
About Open Source LicensesAnton Anisimov
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковElena Grahovac
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Ontico
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityDefconRussia
 
Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"Yandex
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Vladimir Malyk
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
 
Redis varnish js
Redis varnish jsRedis varnish js
Redis varnish jsiliakan
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
Web сайт - гиперструктура данных
Web сайт - гиперструктура данныхWeb сайт - гиперструктура данных
Web сайт - гиперструктура данныхЕлена Ключева
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковОпенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковYandex
 
Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»Yandex
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичковOvadiah Myrgorod
 

Semelhante a Как опубликовать свою тему в директорию WordPress (20)

Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
 
About Open Source Licenses
About Open Source LicensesAbout Open Source Licenses
About Open Source Licenses
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Этичный хакинг
Этичный хакингЭтичный хакинг
Этичный хакинг
 
Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходников
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Приложения в плагинах
Приложения в плагинахПриложения в плагинах
Приложения в плагинах
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source security
 
Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
5 urok
5 urok5 urok
5 urok
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
 
Redis varnish js
Redis varnish jsRedis varnish js
Redis varnish js
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
Web сайт - гиперструктура данных
Web сайт - гиперструктура данныхWeb сайт - гиперструктура данных
Web сайт - гиперструктура данных
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковОпенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
 
Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»
 
Drupal code sprint для новичков
Drupal code sprint для новичковDrupal code sprint для новичков
Drupal code sprint для новичков
 

Как опубликовать свою тему в директорию WordPress