WordPress get template part


I have seen quite a few searches come through lately for get_template_part.  Seems like a lot of folks don’t know what it’s for, what it does, or how to use it in their WordPress theme.  When it was introduced with WordPress version 3.0 I wasn’t all that excited.  I didn’t see a need for it.  I was kind of set in my ways.  I liked how I did things.  But after looking into it for a while, I discovered it’s a powerful and useful tool.  Let’s take a look at what it does for you.

First off, what is it?  Simply put, get_template_part is just a way to include another file.  But it’s more powerful than a php include statement, because of its flexibility.  It’s amazingly useful, especially for anyone trying to build a child theme.  So let’s take a look at how it could work for you if you are trying to make a child theme for twentyten first.  If we look at index.php in twentyten, we see:

get_template_part( 'loop', 'index' );

What’s that do?  Well let’s take a look at the structure.  Get template part follows the format of:


get_template_part( $slug, $name );

Where the slug is the generic name of the template being called, and name is the specialized name of the template being called.  So there is an order that WordPress would use to try to find the template to use.  Properly named files in your child theme come first, then files in your parent theme are used.  So using the example above with the generic name ‘loop’ and the specialized name ‘index’ here is the order WordPress would look for files.

  1. wp-content/themes/twentytenchild/loop-index.php
  2. wp-content/themes/twentytenchild/loop.php
  3. wp-content/themes/twentyten/loop-index.php
  4. wp-content/themes/twentyten/loop.php

See how that works?  We look for the specialized template in your child theme.  Then the generic.  Then the specialized name in the parent template.  Finally the generic name in the parent theme.

Now sticking with the twentyten theme. We already know we have this in index.php:

get_template_part( 'loop', 'index' );

And we also can see we have this in archive.php:


get_template_part( 'loop', 'archive' );

So what does it all do?  Well, in a basic twentyten install, there are no specialized templates, nothing named loop-index.php or loop-archive.php, so WordPress simply uses loop.php.  But the power comes in here for you, the child themer!  You could overwrite the loop for the index page or the archive page by creating the specialized named file loop-index.php or loop-archive.php.  For instance, if you only made a loop-index.php, then your file would be used for the main index page.  But since you didn’t make a loop-archive.php, twentyten’s original loop.php file would be used.  You see, you can override either template, without affecting the other.  Now if you made a file called just loop.php in your child theme, with no specialized template, then your loop.php would override twentyten’s for both situations.

Hopefully now you can see the naming conventions. How it all works, and how you can override templates in themes which use get_template_part. It gives you a lot of power when making a child theme. But what if you are making your own theme? How can you use it? Well you could a couple of routes here. In all your files (index.php, archive.php, category.php, etc) You could make a call to get_template_part, and make an individual file for each loop. So index.php would have:

get_template_part( 'loop', 'index' );

And then you would make a file called loop-index.php with the loop in it. You could do that for each file. This now gives anyone trying to make a child theme for your theme a way to override your loops. Or you can do what I like. Use get template part in your theme, but just make a loop.php file and code it to account for everything. I have a giant loop.php which uses a variety of conditional statements to cover all my templates. It handles index, archive, my shop, pages, single view, custom post types, etc. I just built the file up as I added everything. So now I have one big loop, but have given users of my theme the ability to use their own loops with get_template_part.

You can also use get_template_part to call in things besides the loop. For instance I use:

get_template_part( 'icons', 'social' );

to call in a file called icons.php. It’s a big block of code that I use to display social icons under member profiles on my blog. Rather than repeat the code on various templates I just included it. This is nice for me as it allows me to reuse the block of code without actually typing it into each template. Keeps things neat and organized. But it also allows child themers to override it with their own code if they feel the need.

That’s it for this article. Hopefully it helped you understand what that bit of code is doing, and why get_template_part is so useful. Now get to building your own child theme, and have some fun with it!

voodoopress.com

Основы get_template_part()

Чаще всего функция get_template_part()


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

Рассмотрим несколько простых примеров:

get_template_part( 'navigation' );  

Данный код выполнит поиск файла navigation.php в активной теме WordPress, и подключит его. В отличие от include() или require(), функция get_template_part() не вызовет ошибок или предупреждений, если файл с таким названием не найден.

У функции есть так же второй необязательный аргумент:

get_template_part( 'navigation', 'header' );  

Данный код выполнит и подключит файл navigation-header.php в активной теме. Если файл с таким названием не существует, то get_template_part() попытается подключить файл navigation.php.

Дочерние темы

В дочерних темах работа с функцией get_template_part() становится немного сложнее. Например:

get_template_part( 'breadcrumbs' );  

Если в момент вызова данной функции на сайте активна дочерняя тема, то поиск файла breadcrumbs.php произойдет сперва в дочерней теме. Если файл с таким названием в дочерней теме отсутствует, то функция попытается подключить файл breadcrumbs.php в родительской теме.

get_template_part( 'breadcrumbs', 'header' );

При таком вызове из дочерней темы, поиск и подключение файлов произойдет в следующем порядке:


  • breadcrumbs-header.php в дочерней теме
  • breadcrumbs-header.php в родительской теме
  • breadcrumbs.php в дочерней теме
  • breadcrumbs.php в родительской теме

Таким образом, если вы разрабатываете тему для WordPress, вы можете дать возможность пользователям легко изменить или предотвратить вывод хлебных крошек в определенных участках темы. Для этого пользователям нужно будет лишь создать файл с определенным именем в дочерней теме.

Форматы записей

Начиная со стандартной темы Twenty Eleven, при выводе содержимого записей в шаблонах используется функция get_template_part() вместе с функцией get_post_format(), которая возвращает формат текущей записи в виде строки:

get_template_part( 'content', get_post_format() );  

Данный подход позволяет разделить вывод разных форматов записей на разные файлы, например content-gallery.php для галерей, content-quote.php для цитат, content-image.php для изображений и т.д. Если тот или иной файл не существует, WordPress будет искать файл с названием content.php.

Пользователям такой темы легко изменить вывод того или иного формата создав новый файл с определенным названием в дочерней теме WordPress.

Функция locate_template()

Функция get_template_part()


, как и многие другие функции для работы с файлами шаблонов WordPress (в том числе get_header(), get_sidebar(), get_footer() и другие) использует функцию ядра locate_template(). Именно эта функция позволяет выбрать и загрузить первый попавшийся файл из заданного массива в дочерней или родительской теме WordPress:

locate_template( array(   'foo.php',   'bar.php',   'baz.php',  ) );  

Данный код выполнит поиск файлов в следующем порядке:

  • foo.php в дочерней теме
  • foo.php в родительской теме
  • bar.php в дочерней теме
  • bar.php в родительской теме
  • baz.php в дочерней теме
  • baz.php в родительской теме

Учтите, что в отличие от функции get_template_part(), функция locate_template() требует полное название файлов в массиве, включая расширение .php. Именно функция locate_template() позволяет реализовать иерархию шаблонов в темах для WordPress.

Если у вас возникли вопросы по работе с функцией get_template_part(), оставьте комментарий и мы обязательно вам ответим. Если вам интересно узнать подробности реализации упомянутых функций, советуем взглянуть на файлы template.php и general-template.php в ядре WordPress.

wpmag.ru

Хук get_template_part_{$slug}

Хук запускается в самом начале функции и позволяет выполнить какой-либо код в зависимости от значений переменных $slug


и $name.

misha.blog

Очень простой вопрос может быть, но я борюсь. В разработке темы я много раз работал с get_template_part() , и я понимаю ее основы. Но когда я разрабатываю плагин, я задавался вопросом, как использовать его, показывая мне некоторые ошибки:


Примечание: использование неопределенной константы STYLESHEETPATH – предполагаемый «STYLESHEETPATH» в ...wp-includestemplate.php в строке 407

  • Возможна ли иерархия «get_template_part»?
  • Содержимое из короткого кода появляется за пределами оболочки содержимого страницы

  • Индекс пользовательского типа сообщения (возможно, используя get_template_part)
  • Шаблоны и CSS — Правильная практика программирования?
  • Сброс местоположения участка детали
  • get_template_part не работает с ajax

а также

Примечание: использование неопределенной константы TEMPLATEPATH – предполагаемый «TEMPLATEPATH» в ...wp-includestemplate.php


в строке 410

В результате проблемы возникла проблема с поддержкой:

  • Используйте get_template_part() в плагине – Поддержка WordPress

Но это кажется огромным обходным решением – я сомневаюсь. Я думаю, что это не должно быть сложно. Я проверил этот ответ WPSE и нашел эту строку кода:

 if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) ) include( 'loop-mycustomposttype.php' ); 

Где есть функция PHP include() . В соответствии с моими знаниями WordPress я научился предпочитать get_template_part() над PHP include() . Тогда как именно я могу использовать простой get_template_part() в моем плагине.

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

 get_template_part( 'my', 'special-admin' ); 

а затем после ошибки измените его на:

 get_template_part( 'my', 'specialadmin' ); 

Но вы знаете, что это не проблема. Я нахожусь на локальном сервере, используя WAMP.

Solutions Collecting From Web of «Как включить файл с помощью get_template_part () в плагин?»

www.wordpressask.com

Basic Usage

Suppose we have a theme that has some post navigation elements above the post and below it. Let’s grab that and put it in a navigation.php file instead. Now, whenever we want to render our post navigation, all we would do is:

get_template_part( 'navigation' );  

Which will load our navigation.php file if it exists. That’s fairly simple, right? Let’s add a little more spice to that. Since our post navigation goes above and below the post content, let’s add the second argument to get_template_part:

get_template_part( 'navigation', 'above' );  // post content goes here ...  get_template_part( 'navigation', 'below' );  

The first call will look for navigation-above.php in our theme folder, and if that doesn’t exist, it will fall back to navigation.php. Similarly, the second call will look for navigation-below.php and fall back to navigation.php.

Pretty slick, eh? But the real power of get_template_part lies within the child themes model.

Child Themes

If you’re not familiar with the child themes model in WordPress, I strongly recommend you refer to the Codex. In a nutshell, a child theme may override the template files in your parent theme with their own, thus making modifications to the original theme without changing its source code or structure.

The get_template_part function plays quite an essential role in the child themes concept. Let’s go back to our first example from earlier:

get_template_part( 'navigation' );  

As I already mentioned, this will look for a template file called navigation.php. However, if we’re in the child theme context, meaning a child theme is activated, such a call to get_template_part will look for navigation.php in our child theme first. If navigation.php is not found in our child theme, it will load the one in the parent theme. Makes sense?

Now comes the tricky part:

get_template_part( 'navigation', 'above' );  

In a child theme context, this will look for the following templates in the following order:

  1. navigation-above.php in the child theme
  2. navigation-above.php in the parent theme
  3. navigation.php in the child theme
  4. navigation.php in the parent theme

The order is pretty important and something you should keep in mind.

Given this fallback model, it’s pretty common to use non hard-coded values with get_template_part in themes. For example:

get_template_part( 'navigation', get_post_type() );  

Where get_post_type() will return the name of the post type that is currently shown, so if we’re on a Post, it’ll attempt to load navigation-post.php and fallback to navigation.php. If we’re on a Page, navigation-page.php and navigation.php. If we’re looking at a custom post type, say a Book, it will look for navigation-book.php and fall back to navigation.php.

A more common use case is post formats, with the post’s content area extracted into a template part of its own, like this:

get_template_part( 'content', get_post_format() );  

Which will attempt to include content-gallery.php for gallery post formats, content-quote.php for quote post formats, and so on. If the particular file doesn’t exist, it will fall back to loading content.php. You can see this approach in action in the Twenty Eleven and Twenty Twelve themes.

Even if your theme does not include template files for all available post formats, it’s okay to follow this model, because a child theme might, and if it doesn’t, WordPress will just resort back to content.php.

konstantin.blog

Всем привет! Сегодня на seo-mayak.com я познакомлю Вас с функцией get_template_part().

С выходом WordPress версии 3.0, структура шаблонов претерпела существенные изменения.

Если до этого шаблоны в основном состояли из стандартного набора файлов, таких как index.php, header.php, single.php, footer.php, archive.php, functions.php, sidebar.php, category.php, page.php, comments.php и style.css, то современные темы пестрят разными, не знакомыми названиями.

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

struktura shablonov

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

В львиной доле статей, на тему расширения функционала сайтов на WordPress, описаны приемы, которые не вписываются в современную структуру шаблонов и образовался некий информационный вакуум, который я и собираюсь заполнить.

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

Функция get_template_part()

В качестве примера, возьмем тему twentyten, которая входит в стандартную сборку WordPress и доступна всем. Давайте посмотрим как устроен файл index.php. Если убрать все комментарии к коду, то содержимое файла будет следующим:

<?php get_header(); ?>  	<div id="container">  		<div id="content" role="main">  		<?php get_template_part( 'loop', 'index' );?>  		</div>  	</div>  <?php get_sidebar(); ?>  <?php get_footer(); ?>  

Как не странно, в файле находится всего несколько строк кода. Вопрос, куда подевался цикл WordPress, постраничная навигация и т.д?

Вместо всего этого в коде прописана всего одна строчка:

<?php get_template_part( 'loop', 'index' );?>  

А теперь откроем файл single.php и посмотрим что прописано там, естественно убрав комментарии к коду:

<?php get_header(); ?>  	<div id="container">  		<div id="content" role="main">  		<?php get_template_part( 'loop', 'single' );?>  		</div>  	</div>  <?php get_sidebar(); ?>  <?php get_footer(); ?>  

Как видно код практически не изменился, за исключением одного слова в уже знакомой нам строчке:

<?php get_template_part( 'loop', 'single' );?>  

Почему так устроены файлы и какую роль в них играет функция get_template_part()?

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

Но как определить, какой файл присоединяется? Для этого надо разобраться с параметрами функции.

Параметры функции get_template_part()

Функция get_template_part() может принимать один или два параметра. На первом примере, приведенным мной выше, функция приняла два параметра:

( 'loop', 'index' )  

Это ничто иное, как название файлов, расположенных в той же директории. Смотрим, действительно в шаблоне темы twentyten есть файл loop.php, в котором и находятся «потерянный» цикл WordPress. Также в шаблоне есть файл index.php.

Теперь давайте проведем несколько экспериментов (для экспериментов советую использовать Денвер).

Эксперимент №1.  Уберем второй параметр из функции, т.е. функция примет такой вид:

<?php get_template_part( 'loop' );?>  

Что произойдет? Удивительно, но главная страница загрузилась без ошибок и шаблон работает исправно.

Эксперимент №2. Уберем первый параметр, но оставим второй:

<?php get_template_part( 'index' );?>  

Обновляем страницу. Опа! Фатальная ошибка, но шаблон при этом все равно загружается, правда уже без контента.

Эксперимент №3. А теперь попробуем поменять параметры местами:

<?php get_template_part( 'index', 'loop' );?>  

Опять фатальная ошибка, все точно также, как при эксперименте №2. Почему так происходит?

Дело в том что первый параметр имеет приоритет, т.е. в данном случаи функция get_template_part() в первую очередь ищет файл loop.php, а если такой не будет обнаружен, то в качестве запасного варианта будет задействован файл index.php, для того, чтобы загрузился хотя бы шаблон.

Теперь посмотрим на файл single.php. Здесь функция get_template_part(), имеет следующие параметры:

( 'loop', 'single' )  

Судя по проведенным ранее экспериментам, приоритетом присоединения должен обладать файл loop.php, так как он прописан в качестве первого параметра, но не тут то было.

В шаблоне есть еще один файл, который называется loop-single.php и именно он будет иметь более высокий приоритет, так как сочетает в своем названии оба параметра, прописанные через дефис. Такие дела! Но и это еще не все.

Если допустить, что у темы twentyten есть дочерняя тема, например twentyten two и в корне этой темы также существует файл loop-single.php, то функция get_template_part() присвоит вышеупомянутому файл, расположенному в дочерней теме, наивысший приоритет.

Если Вы не знаете, что такое дочерняя тема, для чего она нужна и как ее можно создать, то очень советую подписаться на обновления блога.

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

До встречи!

С уважением, Виталий Кириллов

seo-mayak.com

Здравствуйте Flector!
У меня при использовании функции get_template_part() возникла проблема с кодировкой.
Использую на сайте Office Responsive Business Theme.
В этой теме через функцию get_template_part() реализована вставка подписи автора поста author-bio:
<?php get_template_part('author-bio'); ?>
Я по аналогии создал sh-butt:
<?php get_template_part('author-bio'); ?>
Вывоз этих функций вставлен в шаблон по очереди, сначала sh-butt, затем author-bio.

Внутри author-bio.php:
<div class="author-info row">
<h4><?php printf( __( 'About %s', 'wpex' ), get_the_author() ); ?></h4>
<div class="author-info-inner boxed clr">
<div class="author-avatar">
<span class="author-link">
<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'wpex_author_bio_avatar_size', 74 ) ); ?>
</span>
</div><!— .author-avatar —>
<div class="author-description">
<p><?php the_author_meta( 'description' ); ?></p>
</div><!— .author-description —>
</div><!— .author-info-inner —>
</div><!— .author-info —>

Внутри моего sh-butt.php:
<div class="sh-butt-begin"><i class="icon-llgr-smile share"></i>жмите на кнопки</div>
<div class="social-likes">
<div class="facebook" title="Поделиться ссылкой на Фейсбуке">Facebook</div>
<div class="twitter" data-via="likageorgieva" title="Поделиться ссылкой в Твиттере">Twitter</div>
<div class="mailru" title="Поделиться ссылкой в Моём мире">Mir</div>
<div class="vkontakte" title="Поделиться ссылкой во Вконтакте">VK</div>
<div class="odnoklassniki" title="Поделиться ссылкой в Одноклассниках">OK</div>
<div class="plusone" title="Поделиться ссылкой в Гугл-плюсе">Google+</div>
</div>
<script src="//dogshow.me/wp-content/themes/wpex-office/js/social-likes.min.js"></script>

В результате русские буквы из sh-butt.php меняют кодировку и отображаются вопросами, а в author-bio.php такой проблемы нет.
В чём может быть проблема?
Посмотреть можно на странице http://dogshow.me/faqs/kto-takoy-handler
Благодарю за ответ.

www.wordpressplugins.ru

Developing WordPress themes take practice… not because it’s difficult, but because you have to find your groove.

I’m willing to bet the first five themes you build all differ in significant ways based on lessons you learn from each development process. That’s perfectly normal.

One of the patterns you’ll start to develop early on is file organization. It doesn’t take long to figure out your preferred file and directory structure.

That’s what this article is all about, WordPress’ awesome get_template_part() function that helps you organize your theme in a clean and extremely efficient manner.

Including and Requiring Files in PHP

WordPress is written mainly in PHP which comes with a host of functions you can use to build software the way you want it.

Two very common functions are include() and require(). In short, these two functions are the same except for the fact that require() produces a fatal error if it fails while include() only produces a warning.

The purpose of these functions is to “include” or “require” another file’s code in the file making the function call. Plain and simple… the function names say it all.

While these functions are great, they’re limited within the scope of WordPress. Considering how WordPress parent themes and child themes are structured, they may fall a little short based on the situation.

That’s where get_template_part() comes in.

Understanding get_template_part()

As discussed above, handling failure may vary from function to function. PHP’s way of handling these errors makes sense. Use the function correctly or it fails. Period.

In WordPress, though, we need a friendlier solution. It’s best that the functions do a little bit of thinking for us in special cases.

That’s how get_template_part() works in place of include() and require().

You tell the function specifically what files to look for. In the event something goes wrong, it goes through a number of steps to “fix” the mistake. In fact, sometimes it’s not even a mistake and get_template_part() is strategically used as a conditional.

Let’s take a look at how get_template_part() behaves in specific situations before we check out a code example.

Parent Themes and Child Themesget_template_part() understands the relationship between parent themes and child themes. When the function is used call a specific file, it will search for that file in an active child theme first. If it fails, it will then search for the same file in the parent theme.

If that fails, the function will return to the child theme and start searching for a “fix” (remember, it won’t create a warning or fatal error like include() and require()) by loading another file in place of the missing specified file. If that was to fail as well, the function goes back to the parent theme and starts looking for the same fix. Awesome.

Function Self-awareness – That’s a silly thing to say about a function. I know. But get_template_part() knows where it is in your file structure when it’s used. You don’t have to specify which directory the function works from with other WordPress functions like get_stylesheet_directory_uri(). get_template_part() does that for you.

Recognizing Post Formats – In true conditional fashion, get_template_part() can be set up to detect the post format being loaded and search for specific file names based on that post format. This means it also recognizes certain WordPress file naming conventions.

With all of this understood, let’s take a look at the function in more detail.

get_template_part() in Action

get_template_part() takes two parameters, though only one of them is required.

The first parameter is called the “slug.” This parameter is required and is used to start the initial “search” for the file being used. Typically, multiple files will share this slug.

The second parameter is called the “name.” This parameter is optional and is used to further specify which file to locate. The name parameter is usually what makes a file name unique within a given slug.

Here’s an example of how get_template_part() would be used in a theme.

<?php get_header(); ?>    <div id="content" class="content-column">    	<?php while ( have_posts() ) : the_post(); ?>    		<?php get_template_part( 'content', 'page' ); ?>    	<?php endwhile; // end of the loop. ?>    </div>    <?php get_sidebar(); ?>  <?php get_footer(); ?>

What you see here is a typical page.php template file for a theme. It’s responsible for displaying WordPress “Pages.”

Without getting into too much detail, all this file does is call the site’s header file, display an HTML container for Page content, call the site’s sidebar, and call the site’s footer.

The part we want to worry about now is the way get_template_part() is used inside of the WordPress loop – get_template_part( 'content', 'page' ).

Just like get_header() calls the header.php file, get_sidebar() calls the sidebar.php file, and get_footer() calls the footer.php file…

get_template_part( 'content', 'page' ) calls the content-page.php file.

Notice the way the function parameters are used to determine the file name to search for – {slug}-{name}.php.

content-page.php should then be full of code that is relevant to the exact location it’s being called from. In this case, the page content container element and its contents, like the title and entry content, should be in this file like so.

<article>  	<header class="entry-header">  		<h1 class="entry-title"><?php the_title(); ?></h1>  	</header>    	<div class="entry-content">  		<?php the_content(); ?>  	</div>  </article>

The main purpose of get_template_part() is to grab code from another file. Therefore, you are correct in your assumption that instead of using the function, the code inside of the file being called could be pasted in its place.

get_template_part() is used for organization purposes and it also helps with efficiency if multiple template files can share the same remote file through the use of the function.

Here’s how WordPress will treat our get_template_part( 'content', 'page' ) example.

  1. search child theme for content-page.php
  2. search parent theme for content-page.php
  3. search child theme for content.php
  4. search parent theme for content.php

Pay close attention to that order as well as the significance of the slug parameter. Child themes take priority while parent themes back them up. Likewise, the slug parameter backs up the overall function in the event the slug/name combination is not found.

That’s get_template_part() in a nutshell. It allows you to easily call another file’s contents as well as better organize your theme files.

Additional Tips for Using get_template_part()

Templates Directory – When I build custom WordPress themes, I like to keep my theme root as clean as possible and organize files with logical directories. Simple stuff.

Considering the page.php and content-page.php example above is a real-world example that also applies to other template files like single.php, index.php, and archive.php along with their counterparts, I create a directory in my theme root called templates and place all of my content-{name}.php files in that directory.

With this setup, my theme root stays clean and WordPress can still find the top level template files it expects to see in the root.

As you may have guessed, get_template_part() needs to be informed of my decision to place my content files inside of a directory. It’s so easy to do. Simply add the directory name with a trailing slash directly before the slug parameter like so.

<?php get_template_part( 'templates/content', 'page' ); ?>

get_template_part() has the ability to search one directory deep. In this case, it’ll find the templates directory and then search its root for content-page.php just like before.

Using get_template_part() with post Formats – Another common situation in basic WordPress themes is the blog home using the index.php template file to format the blog post listing. Just like in our Page example, index.php will also use get_template_part() to include a more general template file usually called content.php.

The difference here is that the blog home may also have to honor a mix of Post Formats in the blog post listing. Obviously, it has no way of telling which post will be which post format. That’s where this handy functionality comes in.

<?php get_template_part( 'content', get_post_format() ); ?>

What happens here is WordPress will now search for more specified file names using the format content-{post_format_name}.php and select files based on which kind of post format is being displayed in the blog post listing.

If your theme supports “image” post formats, it will search for content-image.php and use that template instead of the default content.php. However, if content-image.php doesn’t exist, again, get_template_part() will simply fall back to content.php.

That means you can use the get_post_format() function for the name parameter in get_template_part() even if your theme doesn’t support post formats. Why? Because if a child theme is ever installed that does support post formats, you’re already good to go.

Happy organizing and coding! ?

buildwpyourself.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.