Страница Тега

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

Страница Тега

Я хочу показать iframe в верхней части страницы определенного тега, поэтому, когда я использую is_tag('my_tag'), я добавлю iframe перед title страницы.

Я пытался использовать этот код, чтобы показать iframe перед содержимым страницы, но он не сработал:

// Показать iFrame в начале страницы
function show_iframe($content) {
    if ( is_tag('my_tag') ) {
        $before="<iframe src=\"https://www.example.com\" sandbox=\"allow-scripts allow-same-origin\"></iframe>";
        return $before . $content;
    }
    return $content;
}
add_filter('the_content', 'show_iframe');

Существует ли какой-либо хуки, которые выполняются перед выводом заголовка страницы? Или существует ли способ echo HTML кода перед выбранным div на странице?

Во-первых, в терминах WordPress ‘содержимое’ не включает ‘заголовок’. (Также будьте осторожны с ‘заголовком’. Иногда это означает ‘заголовок над основным содержимым, и ниже навигации сайта и/или шапки’, а иногда это означает html-заголовок, который является текстовым элементом, который браузер показывает в верхней части окна или вкладки, в его истории и т.д. В данном случае, похоже, вы имеете в виду первое.

Во-вторых, в данном случае нет хука для изменения заголовка. Вместо этого измените шаблон. Вы можете беспокоиться о том, что вам придется изменять несколько файлов шаблонов, поскольку веб-страницы сайта будут выглядеть по-разному. К счастью, для единообразия верхняя часть разных видов веб-страниц обычно выглядит одинаково. Так что, скорее всего, вам нужно будет изменить header.php или какую-то часть шаблона (вероятно, в template-parts/header).

Используйте JavaScript в браузере. Вот решение с использованием jQuery. Обратите внимание, что детали зависят от характеристик темы, ваших тегов, желаемого URL iframe и т.д.

В functions.php добавьте

add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_scripts' );
function my_theme_enqueue_scripts() {
    wp_enqueue_script('title-tweak',
                      get_stylesheet_directory_uri() . '/js/title-tweak.js',
                      array('jquery'));

}

и создайте файл (в вашей теме) js/title-tweak.js, содержащий

(function( $ ) {
    $(document).ready(
        function(){
            if ($("body").hasClass("tag-my_tag")) {
                $(".page-title").before ('<iframe src="http://www.gravatar.com/avatar"></iframe>');
            }

        } ); 
})(jQuery);

Дополнение
Я сделал это немного более сложным способом, потому что в какой-то момент простой способ не сработал. Но (по крайней мере, в моем браузере) это теперь работает.

(function( $ ) {
    $(document).ready(
        function(){
                $(".body.tag-my_tag page-title").before ('<iframe src="http://www.gravatar.com/avatar"></iframe>');
        } ); 
})(jQuery);

Это действительно будет зависеть от вашей темы.

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

Пример:

add_filter( 'get_the_archive_title', function( $title ) {
    if ( is_tag('my_tag') ) {
        return '<iframe src="https://www.example.com" sandbox="allow-scripts allow-same-origin"></iframe>' . $title;
    }
    return $title;
} );

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

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

Чтобы разместить iframe перед заголовком страницы тегов в WordPress, можно использовать несколько различных подходов. Все зависит от того, как ваша тема обрабатывает заголовки. Рассмотрим несколько вариантов решения этой задачи.

1. Использование фильтра get_the_archive_title

Если ваша тема использует стандартную функцию the_archive_title() для отображения заголовка, вы можете воспользоваться фильтром get_the_archive_title. Пример кода для добавления в файл functions.php вашей темы:

add_filter('get_the_archive_title', function($title) {
    if (is_tag('my_tag')) {
        return '<iframe src="https://www.example.com" sandbox="allow-scripts allow-same-origin"></iframe>' . $title;
    }
    return $title;
});

Этот код добавит iframe перед заголовком страницы, когда выставлен тег my_tag.

2. Изменение шаблона

Если ваша тема не использует функцию the_archive_title, вам, возможно, потребуется изменить шаблон страницы. Обычно это делается в файле header.php или в файлах шаблона, которые отвечают за вывод заголовка. Вставьте следующий код перед выводом заголовка:

if (is_tag('my_tag')) {
    echo '<iframe src="https://www.example.com" sandbox="allow-scripts allow-same-origin"></iframe>';
}
the_archive_title('<h1 class="page-title">', '</h1>');

Этот код проверит, является ли текущая страница страницей с тегом my_tag, и, если это так, выведет iframe перед заголовком.

3. Использование JavaScript/jQuery

Если вы хотите использовать JavaScript, то можно добавить jQuery-скрипт, который будет вставлять iframe перед заголовком. Для этого добавьте в файл functions.php следующее:

add_action('wp_enqueue_scripts', 'my_theme_enqueue_scripts');
function my_theme_enqueue_scripts() {
    wp_enqueue_script('title-tweak', get_stylesheet_directory_uri() . '/js/title-tweak.js', array('jquery'));
}

Создайте файл js/title-tweak.js в вашей теме и добавьте следующий код:

(function($) {
    $(document).ready(function() {
        if ($("body").hasClass("tag-my_tag")) {
            $(".page-title").before('<iframe src="https://www.example.com" sandbox="allow-scripts allow-same-origin"></iframe>');
        }
    });
})(jQuery);

Этот код будет проверять наличие класса tag-my_tag у body и вставлять iframe перед элементом с классом page-title.

Заключение

Выбор способа зависит от того, как именно ваша тема построена. Если у вас не получается реализовать один из указанных подходов, напишите, какая тема у вас используется, и мы сможем рассмотреть дополнительные решения.

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

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