Заменить текстовую строку на отдельных страницах

20 нояб. 2018 г., 03:17:59
Просмотры: 18.6K
Голосов: 1

Мне нужно заменить несколько текстовых строк только для двух конкретных страниц на сайте WordPress. Это не должно затрагивать эти строки на других страницах. Я предпочитаю сделать это путем добавления кода в functions.php.

Думаю, что использование части этого кода будет первым шагом, нужна помощь с остальным https://wordpress.stackexchange.com/a/278357

3
Комментарии

Добро пожаловать на WPSE. Вашему вопросу не хватает контекста. Судя по ссылке, вы хотите изменить некоторые строки перевода? Если это так, вам стоит явно указать это в вопросе. Также, релевантный пример (помимо просто фрагмента кода из другого вопроса) был бы полезен для тех, кто попытается дать ответ. Это добавило бы контекста вашему вопросу.

butlerblog butlerblog
20 нояб. 2018 г. 03:24:32

Вы можете добавить фильтр к the_content, но это зависит от того, хотите ли вы перевести, заменить вывод или заменить сохранённый контент.

majick majick
20 нояб. 2018 г. 04:59:18

пожалуйста, проверьте эту ссылку: https://wp-mix.com/replace-all-instances-string-wordpress/

vikrant zilpe vikrant zilpe
20 нояб. 2018 г. 06:15:56
Все ответы на вопрос 3
1

Я не могу оставить комментарий, поэтому отвечу и немного доработаю ответ Bhagyashree, который как раз подходит под ваш вопрос. Разница лишь в том, что вам, возможно, нужно знать, как включить 2 страницы вместо дублирования функции. А также как передать массив строк для замены.

function replace_some_text( $content ) {
   
    // Обратите внимание на || - мы проверяем, является ли это страницей 1 ИЛИ страницей 2. Также изменили на is_single.
    if( is_single( 2020 ) || is_single( 2021 ) {

       $text_strings_to_replace = array( 'первая_строка', 'вторая_строка', 'третья_строка_для_замены' );

       $content = str_replace( $text_strings_to_replace, 'новый_текст', $content );
       
}

       return $content;
}

add_filter('the_content', 'replace_some_text');

Небольшое пояснение. По сути, мы подключаемся к фильтру WordPress [add_filter][1], который позволяет фильтровать весь контент на странице.

Мы фильтруем $content внутри нашей функции, в данном случае используя PHP-функцию [str_replace][1] для поиска в контенте нашего массива строк и замены их на 'новый_текст'.

8 янв. 2021 г. 18:37:00
Комментарии

Предложенные выше решения, к сожалению, не сработали в моем случае, по-видимому, потому что в такой ситуации плагин WooCommerce переопределяет функцию в файле functions.php. Таким образом, для меня решением стало использование плагина Say What.

Aco Aco
29 июл. 2024 г. 00:56:46
0

Пример замены всех вхождений строки в WordPress. Добавьте следующий код в файл functions.php вашей темы:

function replace_text($text) {
    $text = str_replace('look-for-this-string', 'replace-with-this-string', $text);
    $text = str_replace('look-for-that-string', 'replace-with-that-string', $text);
    return $text;
}                                                                                           
add_filter('the_content', 'replace_text');

Подробнее на http://php.net/manual/en/function.str-replace.php

20 нояб. 2018 г. 06:19:56
0

Я столкнулся с той же проблемой в течение последних 18 часов. Я перепробовал множество вариантов кода, и наконец, это сработало. Поместите данный код в раздел Внешний вид >> Редактор тем >> файл functions.php:

function replace_text( $text ) {
    if( is_page( 1709 ) ) {
       $text = str_replace('old_text', 'new_text', $text);
       $text = str_replace('old_text', 'new_text', $text);
       }

return $text;
}

add_filter('the_content', 'replace_text');
  • old_text — это текст, который вы хотите заменить, а new_text — текст, на который нужно заменить.
  • Чтобы определить ID страницы, отредактируйте её — ID будет указан в URL.
31 июл. 2020 г. 22:31:34