Intereting Posts
Как изменить URL сайта для моего нового домена? Защита прямого доступа к PDF и ZIP, если пользователь не вошел (без плагина) Когда я нажимаю «Добавить продукт» в плагине woocommerce, я получаю пустую белую страницу Получение свойств заголовков из объекта WP_Theme Включить липкие сообщения в пользовательский post_type Показывает сайт в стадии разработки, но появляется после входа в админ Как ограничить результаты определенной страницей post_type на странице архива тегов? Пользовательская кнопка общего доступа Facebook с настраиваемым заголовком, URL-адресом, изображением в wordpress Можно ли настроить параметры настройки темы из wp.customize с помощью jquery? Фильтрация сообщений на странице администрирования сообщений по неделям, а не по месяцам Защита паролем для защиты паролем – доля гостей Как установить настраиваемый тип сообщения, чтобы он не отображался на лицевой стороне WooCommerce – добавление пользовательского заказа без использования продукта localhost / wp-admin в моих локальных перенаправлениях на сайт / wp-admin Допустимо ли создание функциональности в теме, созданной для клиента?

Измените the_title () страницы динамически

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

В текущем состоянии я использую короткий код для получения данных плагинов на странице с настраиваемым шаблоном страницы (page-courses.php).

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

 <?php add_filter('the_title', 'custom_page_title'); function custom_page_title() { return 'Custom Title'; } 

редактировать

В footer.php у меня есть функция, которая включает ссылки wp_nav_menu() колонтитула с wp_nav_menu() поэтому я могу определить их в Appearance> Menus. Но с фильтром выше все ссылки в нижнем колонтитуле также меняются на «Пользовательское название». Но я просто хочу изменить название страницы, не затрагивая ссылки меню в нижнем колонтитуле.

Пытаясь добавить условный тег in_the_loop() ссылки in_the_loop() колонтитула все еще затронуты, хотя они не находятся в цикле.

 <?php add_action( 'loop_start', 'set_custom_title' ); function set_custom_title() { if ( in_the_loop() ) { add_filter( 'the_title', 'custom_page_title' ); } } function custom_page_title() { return 'Custom Title'; } 

Это похоже на этот вопрос: фильтруйте проблему the_title в nav , только что ссылки затронуты в нижнем колонтитуле, а in_the_loop() не работает.

Как я могу изменить the_title() но влияя только на заголовок текущей отображаемой страницы, не влияющий на ссылки в нижнем колонтитуле ?

Изменить 2 – Решение

Так что, наконец, я получил работу:

 <?php add_action( 'loop_start', 'set_custom_title' ); function set_custom_title() { add_filter( 'the_title', 'wpse83525_filter_the_title', 10, 2 ); } function wpse83525_filter_the_title( $title, $id ) { if ( 'page-listcourses.php' == get_post_meta( $id, '_wp_page_template', true ) ) { return 'Custom Title'; } return $title; } 

Файл page-listcourses.php – это шаблон пользовательского сообщения, который я назначил статической странице с именем «Курсы».

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

Solutions Collecting From Web of "Измените the_title () страницы динамически"

Я бы использовал is_page_template() условное:

 if ( is_page_template( 'page-courses.php' ) ) { // The current page uses your // custom page template; // do something } 

редактировать

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

 function wpse83525_filter_the_title( $title ) { if ( is_page_template( 'page-courses.php' ) ) { return 'Custom Title'; } return $title; } add_filter( 'the_title', 'wpse83525_filter_the_title' ); 

Теперь, чтобы изолировать только заголовки страниц, которые используют ваш шаблон страницы, вы можете воспользоваться другим параметром, переданным в the_title : $id . Поскольку вы знаете Идентификатор сообщения, для которого фильтруется заголовок, вы можете запросить _wp_page_template и убедиться, что она равна вашему шаблону страницы:

 function wpse83525_filter_the_title( $title, $id ) { if ( 'page-courses.php' == get_post_meta( $id, '_wp_page_template', true ) ) { return 'Custom Title'; } return $title; } add_filter( 'the_title', 'wpse83525_filter_the_title', 10, 2 ); 

Изменить 2

Если вы хотите специально настроить таргетинг на страницу «Курсы», используйте is_page() со страницами 'courses' или заголовок страницы 'Courses' :

 function wpse83525_filter_the_title( $title ) { if ( is_page( 'Courses' ) ) { return 'Custom Title'; } return $title; } add_filter( 'the_title', 'wpse83525_filter_the_title' ); 

Хотя, я бы порекомендовал изменить page-courses.php в пользовательский шаблон страницы , что сделало бы этот процесс более надежным.

Если вы хотите изменить текущий заголовок страницы, используйте in_the_loop() , как в:

 add_filter( 'the_title', 'modify_onpage_title', 10, 2); function modify_onpage_title( $title , $id = null ) { if(!in_the_loop()){ // returns early if not relevant (as in custom menu loops) return $title; } // Tweak your title $title = "Yolo! ". $title; return $title; } 

Попробуйте использовать условные теги, чтобы гарантировать, что the_title() изменяется только на тех страницах, которые вы хотите.

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