Вопрос или проблема
Хотел изменить / заменить все свои теги “b” ~ теги для выделения текста на “strong” теги в WordPress.
Я использовал несколько фрагментов кода, чтобы достичь этого, но они не работают.
Используемые фрагменты:
#Первый
function change_b_to_strong($content){
str_replace('<b>', '<strong>', $content);
str_replace('</b>', '</strong>', $content);
return $content;
}
add_filter( 'the_content', 'change_b_to_strong' );
#Второй
add_filter('tiny_mce_before_init', 'modify_formats');
function modify_formats($settings){
$formats = array(
'bold' => array('inline' => 'b'),
'strong' => array('inline' => 'strong')
);
$settings['formats'] = json_encode( $formats );
return $settings;
}
Как упомянула @Sally CJ, необходимо сохранить результат str_replace()
в переменной.
Для контента вы выбрали правильный фильтр – the_content
, для редактора TinyMCE вам нужно использовать фильтр the_editor
.
Поскольку они схожи, вы можете использовать одну функцию для обоих фильтров.
В моем примере я использую только один str_replace для открывающих и закрывающих тегов.
В принципе, этого будет достаточно, если у вас нет текста ‘b>’ в вашем контенте.
function change_b_to_strong($content){
$content = str_replace('b>', 'strong>', $content);
return $content;
}
add_filter( 'the_content', 'change_b_to_strong' );
add_filter( 'the_editor', 'change_b_to_strong' );
Обновление
Если вы выводите контент, используя get_the_content
, например, этот фильтр никогда не сработает.
Вы также можете применить фильтр the_content
к вашему тексту.
$content = get_the_content();
$content = apply_filters('the_content', $content);
.
Ответ или решение
Для замены тегов <b>
на <strong>
в WordPress, вы можете использовать функцию с фильтрами. Ваша цель — заменить все вхождения тегов <b>
и </b>
на <strong>
и </strong>
соответственно. Давайте рассмотрим, как правильно выполнить эту задачу.
Проблемы с Вашими Сниппетами
Ваша первая попытка замены тегов не сработала по нескольким причинам:
-
Отсутствие присвоения результата: Вы не сохраняете результат функции
str_replace()
. Ваша переменная$content
должна обновляться, чтобы изменения применялись. Функцияstr_replace
возвращает новый строковый результат, и его нужно присвоить переменной. -
Не обработаны закрывающие теги: В вашем коде был только один вызов
str_replace
для открытия тегов, и вы не обрабатывали закрывающие. Это может привести к неточным результатам.
Правильный Подход
Вам нужно создать функцию, которая будет обработать оба типа тегов, и применить её к фильтрам the_content
и the_editor
. Вот пример кода:
function change_b_to_strong($content) {
// Заменяем открывающие и закрывающие теги
$content = str_replace(array('<b>', '</b>'), array('<strong>', '</strong>'), $content);
return $content;
}
// Применяем фильтр к контенту и редактору
add_filter('the_content', 'change_b_to_strong');
add_filter('the_editor', 'change_b_to_strong');
Примечания
- Убедитесь, что функции добавляются в файл
functions.php
вашей темы или в специальный плагин для функций. - Если вы используете
get_the_content()
, то результат не будет проходить через фильтры. Этот момент необходимо учитывать, и к результату необходимо будет применить фильтрthe_content
:
$content = get_the_content();
$content = apply_filters('the_content', $content);
SEO Оптимизация
При такой замене, хотя и не влечет за собой прямых изменений в SEO, важно помнить, что использование <strong>
может положительно сказаться на семантике вашего контента. Это дает понимать поисковым системам, что выделенный текст имеет особую значимость.
Заключение
С помощью вышеописанного подхода, вы сможете эффективно заменить теги <b>
на <strong>
в WordPress. Следуя этому плану, вы обеспечите корректную работу вашей функции и улучшите структуру HTML вашего контента. Будьте внимательны при тестировании на локальном сайте, прежде чем применять изменения на рабочем сайте.