Я использую плагин qTranslateX для своего многоязычного сайта WordPress. Я установил 2 языка: EN & франк
Мне было интересно, как я могу обновлять название сообщения ТОЛЬКО для определенного языка? Я искал везде, и я не нашел решения.
Обходным решением было использование функции preg_replace, которая выглядит следующим образом (скажем, имя сообщения: My [en] English [fr] French [:] post name)
$start = '\[en\]';
$end = '\[';
$original_name = 'My [en]English[fr]French[:] post name';
$replace_with = 'Awsome english new';
$new_post_name = preg_replace('#('.$start.')(.*)('.$end.')#si', '$1'.$replace_with.'$3', $original_name ,1);
echo $new_post_name ;
Это выводит следующую неправильную строку, потому что французский текст удален, поэтому preg_replace не ограничивает первое вхождение:
Мой [en] Потрясающий английский новый [:] название поста
Ожидаемый результат:
Мой [en] Потрясающий английский новый [fr] французский [:] название поста
Я вроде застрял здесь …
Сделайте заменяемую деталь не жадной:
$new_post_name = preg_replace('#('.$start.')(.*?)('.$end.')#si', '$1'.$replace_with.'$3', $original_name ,1);
// here __^
Других решений пока нет …