Папка пользовательских шаблонов
Я создал пользовательскую папку ("/templates") и поместил все файлы шаблонов в эту папку вместо корневой директории ("/wp-content/themes/my-theme/"). Всё работает нормально.
Нужно ли мне добавлять какую-то функцию для указания папки "/templates/" как моей папки шаблонов? Обычно их размещают в корневой директории, верно?
Сейчас всё работает нормально, но я просто хочу знать, нужно ли что-то еще сделать. Я не могу найти информацию об этом в документации WordPress. Я только что установил WPML, и теперь все страницы шаблонов выдают ошибку 404. Интересно, может ли это (пользовательское расположение папки шаблонов) вызывать эти 404 ошибки. Страницы WooCommerce отображаются нормально, так как WC не находится в моей папке шаблонов, он генерируется плагином.
-------- Дополнительно
Я создал шаблон www/wp-content/themes/my-theme/tpl-home.php
Я назвал этот файл как шаблон страницы.
<?php
/*
Template Name: Home
*/
get_header(); ?>
И я переместил файлы шаблонов в www/wp-content/themes/my-theme/templates/tpl-home.php
Это всё ещё работает хорошо. Я видел, что многие темы делают так же.
Нужно ли мне настраивать какую-то функцию для указания папки?

Начиная с WordPress 3.4 вы можете размещать шаблоны страниц в любом подкаталоге первого уровня, но, судя по всему, нельзя размещать их в подкаталогах второго уровня — хотя я лично это не тестировал.
Я рекомендую хранить шаблоны в папке /page-templates/
, так как WordPress, по-видимому, распознаёт её. Из документации WordPress о шаблонах страниц:
WordPress распознаёт подкаталог
page-templates
. Поэтому имеет смысл хранить ваши глобальные шаблоны страниц в этой папке, чтобы поддерживать их организованность.

Вы можете размещать свои шаблоны в активной теме где угодно, но вам нужно подключить ваши файлы в functions.php.
Вы можете создать папку с названием page-templates
внутри вашей текущей темы.
/wp-content/themes/my-theme/page-templates
и добавлять свои пользовательские шаблоны туда.
Подключите файлы в functions.php
if ( is_page_template( 'page-templates/my-template.php' ) ) {
include_once 'page-templates/my-template.php';
}
Это должно работать.
