Отобразить содержимое другой страницы с указанного URL.

Вопрос или проблема

Отобразить содержимое другой страницы с указанного URL.

Я искал плагины, учебные пособия и форумы, но не могу найти решение, которое мне нужно.

Например, у меня есть 2 сообщения с разным содержанием, которые находятся по адресам url-1 и url-2. Что мне нужно, так это чтобы url-1 отображал содержание, которое есть у url-2 на уровне постоянной ссылки, я не хочу использовать внутренние функции, которые зависят от переменной $post или функции get_post. Поскольку я использую плагин кеширования, эти функции не будут работать, это должно быть на уровне URL постоянной ссылки или преобразования URL.

Содержание url-2 должно быть показано в url-1.

Графически:

url-1 = содержание 1

url-2 = содержание 2

Теперь я хочу, чтобы, когда они зайдут на url-1, отображалось содержание 2 без изменения URL.

Чтобы добиться отображения содержания на уровне URL в WordPress без использования внутренних функций, которые зависят от переменной $post или get_post, мы можем воспользоваться действием template_redirect вместе с преобразованием URL.

  1. Добавьте правила переписывания.
  2. Обработайте перенаправление.

Вот пример того, как это реализовать:

// Здесь мы добавили правила переписывания.
function custom_rewrite_rules() {
    add_rewrite_rule( '^url-1/?$', 'index.php?pagename=url-2', 'top' );
}
add_action( 'init', 'custom_rewrite_rules' );

// Это для отображения содержания url-2 при доступе к url-1.
function load_template_for_url_1( $template ) {
    if ( is_page( 'url-1' ) ) {
        // Здесь мы получаем шаблон для url-2.
        $new_template = locate_template( 'page-url-2.php' ); // Необходимо отрегулировать в зависимости от вашего файла шаблона.
        if ( $new_template ) {
            return $new_template;
        }
    }
    return $template;
}
add_filter( 'template_include', 'load_template_for_url_1' );

// Это для сброса правил переписывания при активации
function flush_rewrite_on_activation() {
    custom_rewrite_rules();
    flush_rewrite_rules();
}
register_activation_hook( __FILE__ , 'flush_rewrite_on_activation' );

После выполнения описанных выше шагов нам нужно заменить url-1 и url-2 на фактические слайги ваших сообщений. После добавления этого кода, возможно, нам придется зайти на страницу Настройки > Постоянные ссылки в WordPress, чтобы вручную сбросить правила переписывания. После этого нужно убедиться, что ваш плагин кеширования сконфигурирован для разрешения такого типа перенаправления.

Ответ или решение

Для отображения содержимого одной страницы на другой в WordPress, не используя внутренние функции, такие как переменная $post или функция get_post, можно воспользоваться механизмом перезаписи URL и действием template_redirect. Данный подход позволит отобразить контент с url-2 на url-1, сохраняя при этом URL url-1.

Вот пошаговая инструкция по реализации этой задачи:

1. Добавление правил перезаписи

Сначала необходимо создать правила перезаписи для маршрутизации запросов от url-1 к контенту url-2.

// Добавляем правила перезаписи.
function custom_rewrite_rules() {
    add_rewrite_rule('^url-1/?$', 'index.php?pagename=url-2', 'top');
}
add_action('init', 'custom_rewrite_rules');

2. Обработка подгрузки шаблона

Далее создадим функцию, которая будет загружать шаблон для url-2, когда пользователь обращается к url-1:

// Обрабатываем загрузку шаблона для url-1.
function load_template_for_url_1($template) {
    if (is_page('url-1')) {
        // Находим шаблон для url-2.
        $new_template = locate_template('page-url-2.php'); // Необходимо заменить на ваш файл шаблона.
        if ($new_template) {
            return $new_template;
        }
    }
    return $template;
}
add_filter('template_include', 'load_template_for_url_1');

3. Очистка правил перезаписи при активации плагина

Для того чтобы правила перезаписи сработали, мы также добавим функцию, которая будет очищать правила при активации плагина:

// Очистка правил перезаписи при активации.
function flush_rewrite_on_activation() {
    custom_rewrite_rules();
    flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'flush_rewrite_on_activation');

Настройка

  1. Замените url-1 и url-2 на фактические слаги ваших записей.
  2. Можно получить доступ к странице url-2 через файл шаблона, который вы используете для этой страницы. Убедитесь, что указанный путь к шаблону в функции load_template_for_url_1 соответствует действительному шаблону вашего сайта.
  3. Не забудьте перейти на страницу "Настройки > Постоянные ссылки" в админ-панели WordPress, чтобы обновить правила перезаписи вручную.

При соблюдении всех вышеперечисленных шагов, при переходе на url-1 будет отображаться контент с url-2, оставаясь при этом на url-1. Также убедитесь, что ваш плагин кеширования настроен так, чтобы позволять такую форму перенаправления.

Оцените материал
Добавить комментарий

Капча загружается...