SlideShare a Scribd company logo
Templating WordPress
Konstantin Kovshenin
Automattic
Templating WordPress
Templating WordPress
author-$nicename.php
author-$id.php
author.php
archive.php
paged.php
index.php
$templates = array(
'foo.php',
'bar.php',
'baz.php',
);
$template = locate_template( $templates );
function get_sidebar( $name = null ) {
$templates = array();
if ( '' !== $name )
$templates[] = "sidebar-{$name}.php";
$templates[] = 'sidebar.php';

}

locate_template( $templates, true );
get_sidebar( 'left' );
// sidebar-left.php
// sidebar.php
get_header( 'foo' );
// header-foo.php
// header.php
get_footer( 'bar' );
// footer-bar.php
// footer.php
get_template_part( 'foo', 'bar' );
// foo-bar.php
// foo.php
get_template_part( 'content',
get_post_format() );
//
//
//
//
//

content-gallery.php
content-quote.php
content-image.php
...
content.php
template-loader.php
if

( is_404()

&& $template = get_404_template()

) :

	 elseif ( is_tag()

&& $template = get_tag_template()

) :

	 elseif ( is_date()

&& $template = get_date_template()

) :

	 elseif ( is_category() && $template = get_category_template() ) :
	 elseif ( is_author()
	 elseif ( is_archive()
	 elseif ( is_paged()
	 else :
	

&& $template = get_author_template()
&& $template = get_archive_template()
&& $template = get_paged_template()

) :
) :
) :

$template = get_index_template();

	endif;

	 if ( $template = apply_filters( 'template_include', $template ) )
	

include( $template );
if

( is_404()

&& $template = get_404_template()

) :

	 elseif ( is_tag()

&& $template = get_tag_template()

) :

	 elseif ( is_date()

&& $template = get_date_template()

) :

&& $template = get_paged_template()

) :

	 elseif ( is_category() && $template = get_category_template() ) :
	 elseif ( is_author()
	 elseif ( is_archive()
	 elseif ( is_paged()
	 else :
	

&& $template = get_author_template()
&& $template = get_archive_template()

) :

) :

$template = get_index_template();

	endif;

	 if ( $template = apply_filters( 'template_include', $template ) )
	

include( $template );
if

( is_404()

&& $template = get_404_template()

) :

	 elseif ( is_tag()

&& $template = get_tag_template()

) :

	 elseif ( is_date()

&& $template = get_date_template()

) :

	 elseif ( is_category() && $template = get_category_template() ) :
	 elseif ( is_author()
	 elseif ( is_archive()
	 elseif ( is_paged()
	 else :
	

&& $template = get_author_template()
&& $template = get_archive_template()
&& $template = get_paged_template()

) :
) :
) :

$template = get_index_template();

	endif;

	 if ( $template = apply_filters( 'template_include', $template ) )
	

include( $template );
if

( is_404()

&& $template = get_404_template()

) :

	 elseif ( is_tag()

&& $template = get_tag_template()

) :

	 elseif ( is_date()

&& $template = get_date_template()

) :

	 elseif ( is_category() && $template = get_category_template() ) :
	 elseif ( is_author()
	 elseif ( is_archive()
	 elseif ( is_paged()
	 else :
	

&& $template = get_author_template()
&& $template = get_archive_template()
&& $template = get_paged_template()

) :
) :
) :

$template = get_index_template();

	endif;

	 if ( $template = apply_filters( 'template_include', $template ) )
	

include( $template );
// get_author_template()
$templates[] = "author-{$author->nicename}.php";
$templates[] = "author-{$author->ID}.php";
$templates[] = 'author.php';
$template = locate_template( $templates );
if

( is_404()

&& $template = get_404_template()

) :

	 elseif ( is_tag()

&& $template = get_tag_template()

) :

	 elseif ( is_date()

&& $template = get_date_template()

) :

	 elseif ( is_category() && $template = get_category_template() ) :
	 elseif ( is_author()
	 elseif ( is_archive()
	 elseif ( is_paged()
	 else :
	

&& $template = get_author_template()
&& $template = get_archive_template()
&& $template = get_paged_template()

) :
) :
) :

$template = get_index_template();

	endif;

	 if ( $template = apply_filters( 'template_include', $template ) )
	

include( $template );
if ( $template = apply_filters(
'template_include', $template ) )
include( $template );
function my_template_include( $template ) {
if ( my_is_maintenance() &&
$located = locate_template( 'maintenance.php' ) )
$template = $located;
return $template;

}
add_filter( 'template_include', 'my_template_include' );
locate_template( array(
'foo.php', 'bar.php', 'baz.php' ) );
//
//
//
//
//
//

child/foo.php
parent/foo.php
child/bar.php
parent/bar.php
child/baz.php
parent/baz.php
locate_template( 'related-posts.php', true );
// child/related-posts.php
// parent/related-posts.php
// vs: require get_template_directory() .
'related-posts.php';
wp-includes/template-loader.php
wp-includes/general-template.php
wp-includes/template.php
kovshenin.com/wcsof2013
Templating WordPress
Templating WordPress

More Related Content

DOC
Sumahexavector
DOCX
Simular un next del recordset en php de forma rudimentaria
PDF
การบันทึกและออกจากโปรแกรมMspowerpoint
DOC
Sumahex
PDF
การตกแต่งพื้นหลังให้กับสไลด์
PDF
การเรียกใช้และการเปลี่ยนรูปแบบการแสดงข้อมูลในไฟล์และโฟลเดอร์
PDF
Acções acreditadas fevereiro 2012
PDF
การสร้างรูปทรงเรขาคณิต
Sumahexavector
Simular un next del recordset en php de forma rudimentaria
การบันทึกและออกจากโปรแกรมMspowerpoint
Sumahex
การตกแต่งพื้นหลังให้กับสไลด์
การเรียกใช้และการเปลี่ยนรูปแบบการแสดงข้อมูลในไฟล์และโฟลเดอร์
Acções acreditadas fevereiro 2012
การสร้างรูปทรงเรขาคณิต

What's hot (19)

PDF
การแทรกรูปภาพ
PDF
Introducción a Bolt
PPTX
Form Script
PDF
การแทรกรูปภาพ
PDF
Declaração de Voto da JSD Golegã no Conselho Municipal Juventude Golegã 2012
PDF
jQuery - Javascript para quem não sabe Javascript
PDF
Managen van Verwachtingen.
TXT
Index2
TXT
Miniray.php
PDF
การปรับแต่งตัวอักษร
PDF
Presentación JxNet - Software de Gestión Jurídica Corporativa
PDF
Sumahexavector
PDF
การแทรกสัญลักษณ์หน้าข้อความ
PDF
การแทรกอักษรศิลป์
PDF
Ryn January 2011
PDF
OFFENSE
PDF
Crea un tema compatibile con le ultime novità WordPress
PDF
The evil consequences of fornication and adultery
PDF
Aeman dee ekkadunnaaru
การแทรกรูปภาพ
Introducción a Bolt
Form Script
การแทรกรูปภาพ
Declaração de Voto da JSD Golegã no Conselho Municipal Juventude Golegã 2012
jQuery - Javascript para quem não sabe Javascript
Managen van Verwachtingen.
Index2
Miniray.php
การปรับแต่งตัวอักษร
Presentación JxNet - Software de Gestión Jurídica Corporativa
Sumahexavector
การแทรกสัญลักษณ์หน้าข้อความ
การแทรกอักษรศิลป์
Ryn January 2011
OFFENSE
Crea un tema compatibile con le ultime novità WordPress
The evil consequences of fornication and adultery
Aeman dee ekkadunnaaru
Ad

Viewers also liked (20)

PDF
The Settings API
PDF
7 Tips for Better WordPress Theme Development
PDF
Road to Platform @ WordPress.com VIP Workshop 2014
PDF
Memory Management in WordPress
PDF
Things I Wish I Had Known Before Developing a WordPress Theme
PDF
Где брать ИДЕИ для написания постов и плагинов WordPress
PDF
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
PDF
High Performance WordPress
PDF
Вёрстка по методологии БЭМ
PDF
SEO - поведенческие факторы.
PPTX
следите за-языком-20150709
PDF
Premium-темы WordPress
PDF
Защищаем WordPress-сайт от хакерских атак
PDF
WordPress под нагрузкой: масштабирование и отказоустойчивость
PDF
WordPress: Getting Under the Hood
PDF
Пожиратели памяти в WordPress
PDF
State of the Word 2014
PDF
WordPress 4.4 and Beyond
PDF
State of the Word 2016
PDF
What Makes Great Infographics
The Settings API
7 Tips for Better WordPress Theme Development
Road to Platform @ WordPress.com VIP Workshop 2014
Memory Management in WordPress
Things I Wish I Had Known Before Developing a WordPress Theme
Где брать ИДЕИ для написания постов и плагинов WordPress
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
High Performance WordPress
Вёрстка по методологии БЭМ
SEO - поведенческие факторы.
следите за-языком-20150709
Premium-темы WordPress
Защищаем WordPress-сайт от хакерских атак
WordPress под нагрузкой: масштабирование и отказоустойчивость
WordPress: Getting Under the Hood
Пожиратели памяти в WordPress
State of the Word 2014
WordPress 4.4 and Beyond
State of the Word 2016
What Makes Great Infographics
Ad

More from Konstantin Kovshenin (9)

PDF
Scaling out with WordPress
PDF
7 убийц производительности WordPress
PDF
Будущее WordPress (SPB, 2014)
PDF
Будущее WordPress
PDF
Как повысить скорость вашего сайта на WordPress
PDF
Основые безопасности WordPress
PDF
Цикл разработки WordPress
PDF
Секреты WP_Query
Scaling out with WordPress
7 убийц производительности WordPress
Будущее WordPress (SPB, 2014)
Будущее WordPress
Как повысить скорость вашего сайта на WordPress
Основые безопасности WordPress
Цикл разработки WordPress
Секреты WP_Query

Templating WordPress

  • 6. function get_sidebar( $name = null ) { $templates = array(); if ( '' !== $name ) $templates[] = "sidebar-{$name}.php"; $templates[] = 'sidebar.php'; } locate_template( $templates, true );
  • 7. get_sidebar( 'left' ); // sidebar-left.php // sidebar.php
  • 8. get_header( 'foo' ); // header-foo.php // header.php get_footer( 'bar' ); // footer-bar.php // footer.php
  • 9. get_template_part( 'foo', 'bar' ); // foo-bar.php // foo.php
  • 12. if ( is_404() && $template = get_404_template() ) : elseif ( is_tag() && $template = get_tag_template() ) : elseif ( is_date() && $template = get_date_template() ) : elseif ( is_category() && $template = get_category_template() ) : elseif ( is_author() elseif ( is_archive() elseif ( is_paged() else : && $template = get_author_template() && $template = get_archive_template() && $template = get_paged_template() ) : ) : ) : $template = get_index_template(); endif; if ( $template = apply_filters( 'template_include', $template ) ) include( $template );
  • 13. if ( is_404() && $template = get_404_template() ) : elseif ( is_tag() && $template = get_tag_template() ) : elseif ( is_date() && $template = get_date_template() ) : && $template = get_paged_template() ) : elseif ( is_category() && $template = get_category_template() ) : elseif ( is_author() elseif ( is_archive() elseif ( is_paged() else : && $template = get_author_template() && $template = get_archive_template() ) : ) : $template = get_index_template(); endif; if ( $template = apply_filters( 'template_include', $template ) ) include( $template );
  • 14. if ( is_404() && $template = get_404_template() ) : elseif ( is_tag() && $template = get_tag_template() ) : elseif ( is_date() && $template = get_date_template() ) : elseif ( is_category() && $template = get_category_template() ) : elseif ( is_author() elseif ( is_archive() elseif ( is_paged() else : && $template = get_author_template() && $template = get_archive_template() && $template = get_paged_template() ) : ) : ) : $template = get_index_template(); endif; if ( $template = apply_filters( 'template_include', $template ) ) include( $template );
  • 15. if ( is_404() && $template = get_404_template() ) : elseif ( is_tag() && $template = get_tag_template() ) : elseif ( is_date() && $template = get_date_template() ) : elseif ( is_category() && $template = get_category_template() ) : elseif ( is_author() elseif ( is_archive() elseif ( is_paged() else : && $template = get_author_template() && $template = get_archive_template() && $template = get_paged_template() ) : ) : ) : $template = get_index_template(); endif; if ( $template = apply_filters( 'template_include', $template ) ) include( $template );
  • 16. // get_author_template() $templates[] = "author-{$author->nicename}.php"; $templates[] = "author-{$author->ID}.php"; $templates[] = 'author.php'; $template = locate_template( $templates );
  • 17. if ( is_404() && $template = get_404_template() ) : elseif ( is_tag() && $template = get_tag_template() ) : elseif ( is_date() && $template = get_date_template() ) : elseif ( is_category() && $template = get_category_template() ) : elseif ( is_author() elseif ( is_archive() elseif ( is_paged() else : && $template = get_author_template() && $template = get_archive_template() && $template = get_paged_template() ) : ) : ) : $template = get_index_template(); endif; if ( $template = apply_filters( 'template_include', $template ) ) include( $template );
  • 18. if ( $template = apply_filters( 'template_include', $template ) ) include( $template );
  • 19. function my_template_include( $template ) { if ( my_is_maintenance() && $located = locate_template( 'maintenance.php' ) ) $template = $located; return $template; } add_filter( 'template_include', 'my_template_include' );
  • 20. locate_template( array( 'foo.php', 'bar.php', 'baz.php' ) ); // // // // // // child/foo.php parent/foo.php child/bar.php parent/bar.php child/baz.php parent/baz.php
  • 21. locate_template( 'related-posts.php', true ); // child/related-posts.php // parent/related-posts.php // vs: require get_template_directory() . 'related-posts.php';