WordPress название текущей страницы
Содержание
Но сегодня хотел рассказать немного о другом — как с помощью функции WordPress узнать шаблон, установленный для текущей страницы. Используем для этих целей — is_page_template.
Функция is_page_template: описание, использование
Синтаксис ее следующий:
is_page_template ( string|array $template = ” )
Функция определят установлен ли указанный в параметре один или несколько шаблонов для данной конкретной страницы. Возвращает булевое значение True / False.
У нее есть всего один параметр — $template (string|array), где размещается название шаблона для проверки (в нашем примере сверху это был бы page-main.php).
Если файл находится в подкатегории, то пишете путь через слеш:
Данное решение нельзя использовать внутри цикла Loop, но тут есть альтернатива в виде функция get_page_template_slug( $post_id ). Она возвращает путь (адрес) установленного шаблона или пустую строку. Использовать ее можно как в цикле, так и вне его:
// in the loop: if ( get_page_template_slug( get_the_ID() ) ) < // Yep, this page has a page template >// anywhere: if ( get_page_template_slug( $some_post_ID ) )< // Uh-huh. >
Но вернемся к нашей основной функции is_page_template. Вот вам простой пример ее применения:
У меня есть страница с заголовком “My Blog”.
Эта страница используется как “Posts page”, т.е. в настройках ВП указано, что главной является статическая страница, а “My Blog” – страница записей.
Как вывести в шаблоне заголовок данной страницы (My Blog)?
Используя функцию
the_title()
Выводится заголовок первого поста.
Эта тема — лакомый кусочек для всех, кто занимается созданием WordPress тем. Очень важно, чтобы ваша тема выводила подходящий заголовок на страницу независимо от того, какие настройки используются владельцем сайта.
Вы вероятно уже знаете, что пользователь может изменить страницы, которые используются для главной страницы и страницы записей (она же страница блога) в “Настройках” -> “Чтение” в панели управления.
На примере выше я хочу установить статическую страницу для моей главной страницы, а для страницы записей (страницы блога) назначить другую страницу. Сейчас, когда моя страница записей уже не используется для главной страницы, я хочу выводить такой заголовок страницы, который пользователь назначит для нее в теме.
Это добавит ясности для моих пользователей и сделает все мои страницы максимально целостными. Например, может случится так, что я буду использовать страницу записей для отображения новостей и захочу назвать эту страницу “Новости”.
Вместо того, чтобы озадачить пользователя вопросом как отобразить необходимый заголовок на странице, целесообразней было бы обеспечить его автоматический вывод.
У WordPress есть функция the_title() , она отлично срабатывает внутри цикла WordPress. Проблема в том, что, если вы используете эту функцию для всех ваших записей в блоге внутри цикла, и попытаетесь вернуть заголовок страницы за его пределами, ничего хорошего не выйдет.
Все, что вы получите в итоге, это — только заголовок для первой записи на странице.
И так, как же вывести заголовок страницы для страницы записей в WordPress?
Есть два способа сделать это. Первый — самый простой:
Единственная проблема, с которой вы можете столкнуться, используя этот метод, это то, что функция возвращает заголовок моментально. Если вам захочется по какой-либо причине записать в переменную заголовок, вам придется использовать буферизацию вывода.
Также вы сможете воспользоваться функцией get_the_title() , чтобы записать заголовок в переменную, в качестве параметра нужно передать id поста. Если id поста не будет передан, то функция попытается использовать id текущей страницы.
К сожалению, в нашем случае это функция не сможет определить id текущей страницы правильно и это есть та самая причина, по которой мы не смогли воспользоваться функцией the_title() раньше: функция the_title() — это функция-обёртка для функции get_the_title().
К счастью, WordPress хранит id страницы, которую вы хотите использовать как страницу записей в базе данных. Поэтому, мы можем задать параметр таким способом:
$our_title = get_the_title( get_option(‘page_for_posts’, true) );
И даже несмотря на то, что этой информации может быть для вас предостаточно, по крайней мере теперь вы знаете, как получить заголовок для страницы блога.
“>