Поддержка Проблемы и решения Замена генерируемого

  • Ребята привет! На сайте есть страницы курсов валют с автоматически генерируемыми тайтлами (на английском языке). Эти тайтлы генерирует плагин, который подтягивает курсы по API со сторонних сервисов. На некоторые из валют тайтлы необходимо прописать свои. Попытался в fuctions.php на add_theme_support повесить фильтр:

    function filter_function_name_crypto ( $title ){
    	if (get_the_ID() == 567) {
    		if (preg_match("/Курс Currency/i", $title)) {
    			str_replace("Курс Currency", "Курс Валюты / Currency", $title);
    				echo 'Is';
    			} else {
    				echo 'No';
    			}
    		}
    	return $title;	
    }
    add_filter( 'pre_get_document_title', 'filter_function_name_crypto', 10);

    По идее должно было поменять Курс Currency на Курс Валюты / Currency в тайтле, но не поменяло. На всякий случай вывел Is — если есть совпадение и No — если нет совпадения. Вывелось Is, а при внесении изменений в Курс Currency (например: Курс Currencies) выводит No. То есть функция видит сам тайтл, но изменения вносить не хочет. Может я str_replace неправильно использую, может есть другие фильтры или вообще способы внести изменения в уже сформированный тайтл. Напрямую через базу бесполезно, запрос API выполняется каждые 5 минут и после него производится формирование новой таблицы на автомате с английскими названиями валют. Заранее спасибо!

    • Тема изменена 4 нед., 1 день назад пользователем  romveld.
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Результат работы str_replace() нужно присвоить переменной $title:

    
    $title = str_replace("Курс Currency", "Курс Валюты / Currency", $title);
    

    Точно!!! Уже очевидного не замечаю). Большое спасибо! Единственное опять косяк:

    function filter_function_name_crypto ( $title ){
    	if (get_the_ID() == 567) {
    		if (preg_match("/Курс Currency/i", $title)) {
    			$title = str_replace("Курс Currency", "Курс Валюты / Currency", $title);
    				echo $title;
    			}
    		}
    	return $title;	
    }
    add_filter( 'pre_get_document_title', 'filter_function_name_crypto', 10);

    echo $title выводит изменённый вариант, а сам результат функции (return $title) отдаёт старый. С этим не подскажите?

    • Ответ изменён 4 нед., 1 день назад пользователем  romveld.
Просмотр 2 ответов — с 1 по 2 (всего 2)