get_page_templates()

Получает шаблоны страниц, доступные в этой теме
Функция WordPress
INT 1.5.0
WordPress Icon

Описание функции

Функция get_page_templates() возвращает список шаблонов страниц, доступных в текущей теме WordPress.

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

Функция get_page_templates() возвращает массив имен файлов шаблонов, сгруппированных по имени шаблона, определенному в заголовке файла шаблона.

Использование

get_page_templates( WP_Post|null $post = null, string $post_type = 'page' ): string[]

Функция get_page_templates() принимает два необязательных параметра: $post и $post_type.

$post — объект типа WP_Post или null, предоставленный для контекста. По умолчанию: null.

$post_type — строка, указывающая тип записи, для которой нужно получить шаблоны. По умолчанию: 'page'.

Функция возвращает массив имен файлов шаблонов, сгруппированных по имени шаблона, определенному в заголовке файла шаблона.

<?php
// Получение списка шаблонов страниц
$page_templates = get_page_templates();
// Вывод списка шаблонов
foreach ( $page_templates as $template_name => $template_file ) {
    echo '<p>' . $template_name . ' - ' . $template_file . '</p>';
}
?>

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

Примеры использования

Получение доступных шаблонов страниц


$templates = get_page_templates();
// Результат
// Array (
//     'Default Template' => 'default.php',
//     'Custom Template' => 'custom.php'
// )

Функция get_page_templates() возвращает массив доступных шаблонов страниц в текущей теме WordPress. Ключами массива являются названия шаблонов, а значениями — их файлы.

Определение текущего шаблона страницы


$current_template = get_page_template_slug();
// Результат
// 'custom.php'

Функция get_page_template_slug() возвращает название файла текущего шаблона страницы, который используется для отображения текущей страницы. Если текущая страница использует стандартный шаблон, то возвращается пустая строка.

Использование шаблонов страниц для разных типов записей


$post_type = 'post';
$templates = get_page_templates( null, $post_type );
// Результат
// Array (
//     'Default Template' => 'default.php',
//     'Custom Template' => 'custom.php'
// )

Функция get_page_templates() позволяет получить шаблоны страниц для разных типов записей. Второй параметр функции позволяет указать тип записи, для которой нужно получить шаблоны. В примере выше, мы получаем шаблоны для типа записи «post».

Настройка дополнительных параметров шаблонов страниц


$args = array(
    'post_type' => 'page',
    'post_status' => 'publish',
    'posts_per_page' => -1
);
$pages = get_pages( $args );
foreach ( $pages as $page ) {
    $templates = get_page_templates( $page );
    // Результат
    // Array (
    //     'Default Template' => 'default.php',
    //     'Custom Template' => 'custom.php'
    // )
}

Функция get_page_templates() может быть использована для получения шаблонов страниц для конкретной страницы. Первый параметр функции принимает объект WP_Post страницы, для которой нужно получить шаблоны. В примере выше, мы получаем шаблоны для каждой опубликованной страницы.

Вопросы и ответы

Как получить список доступных шаблонов страниц в теме?

Функция get_page_templates() позволяет получить список шаблонов страниц, доступных в текущей теме WordPress. Это очень полезно, если вы хотите динамически выбирать шаблон для отображения страницы.

Для получения списка шаблонов страниц вам необходимо вызвать функцию get_page_templates() без аргументов:


$templates = get_page_templates();

Функция вернет массив с именами файлов шаблонов, где ключами будут имена шаблонов, а значениями — имена файлов:


array(
    'Шаблон 1' => 'template-1.php',
    'Шаблон 2' => 'template-2.php',
    'Шаблон 3' => 'template-3.php',
)

Как изменить тип поста, для которого получаются шаблоны страниц?

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


$templates = get_page_templates(null, 'custom_post_type');

В данном примере, функция вернет список шаблонов страниц для типа поста «custom_post_type».

Как добавить новый шаблон страницы в тему?

Добавление нового шаблона страницы в тему WordPress — это просто. Вам нужно создать новый файл шаблона и добавить его в корневую папку вашей темы. Затем, в файле шаблона, вы должны добавить комментарий с информацией о шаблоне, используя следующий формат:


/*
Template Name: Название шаблона
*/

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

Как удалить шаблон страницы из темы?

Функция get_page_templates() возвращает массив с именами файлов шаблонов страниц, доступных в текущей теме WordPress. Но что, если вы хотите удалить какой-то из этих шаблонов? Вот как это сделать:


function remove_page_template( $templates ) {
    unset( $templates['template-name.php'] );
    return $templates;
}
add_filter( 'theme_page_templates', 'remove_page_template' );

В этом примере мы используем хук theme_page_templates, чтобы удалить шаблон с именем «template-name.php». Просто добавьте этот код в файл functions.php вашей темы и указывайте имена шаблонов, которые вы хотите удалить.

Как изменить название шаблона страницы, отображаемое в админке?

По умолчанию, названия шаблонов страниц, доступных в теме, отображаются в админке WordPress так, как они названы в файлах шаблонов. Но что, если вы хотите изменить это название для более понятного отображения? Вот как это сделать:


function change_page_template_name( $templates ) {
    $templates['template-name.php'] = 'Новое название шаблона';
    return $templates;
}
add_filter( 'theme_page_templates', 'change_page_template_name' );

В этом примере мы снова используем хук theme_page_templates, чтобы изменить название шаблона с именем «template-name.php» на «Новое название шаблона». Просто добавьте этот код в файл functions.php вашей темы и указывайте имена шаблонов и новые названия.

Как использовать шаблон страницы для определенного поста?

Функция get_page_templates() возвращает массив с именами файлов шаблонов страниц, доступных в текущей теме WordPress. Но как использовать определенный шаблон для конкретного поста? Вот как это сделать:


function set_page_template( $template ) {
    if ( is_singular( 'post' ) ) {
        $template = get_stylesheet_directory() . '/custom-template.php';
    }
    return $template;
}
add_filter( 'page_template', 'set_page_template' );

В этом примере мы используем хук page_template, чтобы установить шаблон страницы «custom-template.php» для всех постов. Просто добавьте этот код в файл functions.php вашей темы и укажите путь к файлу шаблона, который вы хотите использовать.

Как проверить, существует ли определенный шаблон страницы в теме?

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

Пример кода:


$templates = get_page_templates();
if ( isset( $templates['my-template.php'] ) ) {
    echo 'Шаблон страницы "my-template.php" существует в теме.';
} else {
    echo 'Шаблон страницы "my-template.php" не существует в теме.';
}

Как получить название шаблона страницы по его файлу?

Если вам нужно получить название шаблона страницы по его файлу, вы можете воспользоваться функцией get_page_templates(). Она вернет массив имен файлов шаблонов, сгруппированных по названию шаблона.

Пример кода:


$templates = get_page_templates();
foreach ( $templates as $template_file => $template_name ) {
    if ( $template_file === 'my-template.php' ) {
        echo 'Название шаблона страницы: ' . $template_name;
        break;
    }
}

Как получить список шаблонов страниц для определенного типа поста?

Для получения списка шаблонов страниц для определенного типа поста вам необходимо использовать функцию get_page_templates() и передать в нее тип поста в качестве параметра.

Пример кода:


$templates = get_page_templates( null, 'custom-post-type' );
foreach ( $templates as $template_file => $template_name ) {
    echo 'Шаблон страницы: ' . $template_name;
}

Функция get_page_templates() возвращает список шаблонов страниц, доступных в текущей теме WordPress. Она позволяет проверить существование определенного шаблона, получить название шаблона по его файлу и получить список шаблонов для определенного типа поста. Эта функция является полезным инструментом для разработчиков WordPress, позволяющим управлять и настраивать шаблоны страниц в теме.

Связанные элементы

  • Функция get_page_template(): Возвращает путь к шаблону страницы, используемому для конкретной страницы.
  • Функция get_page_template_slug(): Возвращает псевдоним шаблона страницы, используемого для конкретной страницы.
Обсуждение