2016-12-12 1 views
0

Я хочу заменить тег <h2 class="fusion-post-title"> тегом <h1>.Замена тегов html с помощью regex и add_filter()

Я проверил регулярное выражение на regex101.com, и группы захвата есть.

Это правильный способ сделать это? Может быть, Wordpress не запускает мой add_filter()?

function replace_content($content){ 

    $content = preg_replace('#<h2 class="fusion-post-title"(.*?)>(.*?)<\/h2>#si', '<h1 class="fusion-post-title"${1}>${2}</h1>', $content); 

    return $content; 
} 

add_filter('the_content','replace_content'); 

ответ

0

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

  1. Вы можете произвести поиск по теме для fusion-post-title и посмотреть, какие функции приходят, и есть ли какие-либо фильтры или опции, которые вы можете использовать. К сожалению, поскольку это тема премиум, у меня нет последней копии для проверки, иначе я бы указал вам в правильном направлении.

  2. Вы можете редактировать шаблоны темы напрямую: Я бы рекомендовал сделать это с дочерней темой, не напрямую с файлами темы. Для получения дополнительной информации о настройке дочерней темы, вы должны refer to the codex.

Предполагая, что вы собираетесь с опцией 2: как только вы получили ваш ребенок тема создана (то есть у вас есть ваш functions.php и styles.css) , вы можете скопировать соответствующие шаблоны от родителя темы к теме ребенка, а затем отредактируйте их по своему усмотрению. Если вы посмотрите на Авада-х single.php вы заметите что-то подобное:

<?php echo avada_render_post_title($post->ID, false, '', '2'); ?> 

Последний аргумент - 2 - это уровень заголовка для использования (т.е. h2). Просто измените это на 1, и вам должно быть хорошо идти. Или замените его полностью на собственную разметку:

<h1 class="post_title"><?php the_title();?></h1> 

Повторите процедуру, для которой необходимы шаблоны.

+0

Спасибо @ Dre Я очень ценю вашу помощь. Если я использую «the_title», я могу попасть в теги h2, но я не могу выйти за рамки этих. Я не хотел редактировать основные файлы, потому что, когда есть обновление, ситуация гораздо более вероятна. Простые вещи становятся такой большой болью в прикладе. – InsuredApple

+0

@InsuredApple Есть, вероятно, варианты темы для изменения тега: я смотрю на старую версию Avada, и похоже, что есть возможность изменить тег заголовка, поэтому вам может не понадобиться ничего редактировать. Если вы * * должны редактировать шаблоны, вы можете создать дочернюю тему, чтобы ваши изменения были в безопасности от обновлений. – Dre

+0

получил. Спасибо. Я связался с ними, и они сказали мне изменить основные файлы. Я надеялся написать плагин или использовать фрагменты кода, чтобы внести изменения. Я начну смотреть на детские темы. Спасибо;) – InsuredApple