Вопрос или проблема
У меня есть болезненная проблема с клиентом. Им нужно загрузить ленту с удаленной конечной точки на страницу, которая соответствует дизайну их шаблона WordPress. Они также хотят отображать страницу по определенному URL.
Например
myclient.com/we-want-it-here
Я создал страницу, которая загружает ленту, и я могу включить заголовок и нижний колонтитул,
<?php
define('WP_USE_THEMES', false);
require('path/to/my-wordpress-dir/wp-blog-header.php');
get_header();
?>
//Содержимое тела вашей XHTML-страницы здесь
<?php get_footer(); ?>
НО я не знаю, как сделать страницу частью схемы URL WordPress? Есть ли способ это осуществить?
Кроме того, эта страница также отображает “Страница не найдена” в заголовке, по очевидным причинам. Как я могу переопределить мета-теги на такой пользовательской странице, которая вынуждена существовать в этом неудобном окружении WordPress.
Любые предложения в правильном направлении будут очень-очень полезны!
Вы можете создать шаблон WordPress и затем установить вашу страницу myclient.com/we-want-it-here для использования этого шаблона.
Таким образом, вы сможете использовать get_header()
и get_footer()
, и включить ваш пользовательский код.
Надеюсь, это поможет!
Мне это тоже было нужно, и это было так просто, как:
add_filter('template_include', function ($template) {
if (get_query_var('name') === 'we-want-it-here') {
return get_stylesheet_directory() . 'path/to/my-standalone-page.php';
}
return $template;
}
Для проблемы с заголовком вы должны использовать плагин, который должен быть загружен до WordPress с использованием $GLOBALS['wp_filter']
:
<?php
define('WP_USE_THEMES', false);
function change_page_title ($title) {
// Сделайте немного магии и в конечном итоге измените $title, затем верните его
return "Ваш заголовок";
}
// Вместо add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ):
$GLOBALS['wp_filter'][ 'pre_get_document_title' ][ 10000 ][] = array(
'function' => 'change_page_title',
'accepted_args' => 1
);
require( __DIR__ . '/../wp-blog-header.php');
get_header();
?>
//Содержимое тела вашей XHTML-страницы здесь
<?php get_footer(); ?>
Ответ или решение
Создание пользовательской PHP страницы и ее загрузка по определенному URL в WordPress
Для решения задачи по загрузке пользовательской страницы в WordPress, которая будет отображаться по конкретному URL, вам следует учесть несколько ключевых шагов. WordPress позволяет высоко кастомизировать функциональность, поэтому вы сможете создать страницу, которая будет соответствовать нуждам вашего клиента, интегрировать ее в URL-схему WordPress и корректно управлять мета-тегами.
1. Создание шаблона страницы WordPress
Вам потребуется создать выделенный шаблон для вашей пользовательской страницы. Выполните следующие шаги:
-
Создайте новый файл в каталоге "themes":
- Перейдите в папку с используемой темой:
wp-content/themes/your-theme/
. - Создайте новый файл, например,
template-we-want-it-here.php
.
- Перейдите в папку с используемой темой:
-
Определите шаблон страницы:
В начале файла добавьте следующий комментарий, чтобы WordPress распознал этот файл как шаблон:<?php /** * Template Name: Custom Template for Remote Feed */ get_header(); ?> <!-- Ваш контент и код для загрузки удаленного фида --> <?php get_footer(); ?>
-
Загрузите и обработайте удаленный фид:
Поместите ваш код, который загружает фид, междуget_header()
иget_footer()
. Убедитесь, что вы обрабатываете данные безопасно.
2. Регистрация персонализированного URL
Чтобы привязать шаблон к определенному URL:
-
Создание новой страницы в админке WordPress:
- Перейдите в "Страницы" > "Добавить новую".
- Назовите страницу (например, "Мы хотим это здесь").
- В разделе "Атрибуты страницы" выберите созданный шаблон "Custom Template for Remote Feed".
- Сохраните страницу.
-
Обработка маршрутизации:
Используйте фильтрtemplate_include
для перенаправления на ваш шаблон:add_filter('template_include', function ($template) { if (is_page('we-want-it-here')) { return get_template_directory() . '/template-we-want-it-here.php'; } return $template; });
-
SEO и управление мета-тегами:
Для смены заголовка страницы и других мета-тегов используйте хук WordPresspre_get_document_title
или аналогичные фильтры:function change_page_title($title) { if (is_page('we-want-it-here')) { return "Ваш новый заголовок"; } return $title; } add_filter('pre_get_document_title', 'change_page_title');
Заключение
Следуя вышеописанным шагам, вы создадите интегрированное решение, которое представит ваш фид на пользовательской странице по заданному URL, корректно интегрируясь в WordPress и SEO-схему. Это решение будет актуальным для удовлетворения требований вашего клиента и поддержания сложности проекта на базе стандартных инструментов WordPress.