Я использую WP 5.3 со стандартным редактором (Gutenberg) вместе с плагином Polylang 2.7.2, чтобы сделать сайт многоязычным. Используя Polylang, каждое сообщение состоит из одного сообщения перевода для каждого языка (Polylang группирует сообщения перевода вместе).
Теперь у меня есть следующая проблема: когда пользователь пишет сообщение и пытается установить ссылку на другое уже существующее сообщение, раскрывающийся список поиска для текста ссылки (Ctrl + K) показывает сообщения на всех доступных языках. Если заголовок сообщения не зависит от языка c (например, «Умный дом»), но сообщение «Умный дом» существует на двух языках, то выбор пользователем метода проб и ошибок тот, который соответствует языку текущего отредактировал сообщение:
только один из этих постов на английском sh
Я хотел, чтобы это всплывающее окно URL отображало либо только сообщения на том же языке, что и текущее сообщение, либо изменение результатов в раскрывающемся списке, чтобы отобразить указанный c язык (по флагу, или "[en]" перед заголовком).
Во-первых, я попытался использовать выпадающую панель меню администратора «Фильтровать контент по языку», чтобы ограничить его до англоязычных sh сообщений - не повлияло на падение вниз.
Затем я попытался использовать фильтр, чтобы изменить результаты запроса для этого раскрывающегося списка. Использование pre_get_posts
и установка жестко заданного языка на английский sh сработало:
add_filter('pre_get_posts', [self::class, 'filterQueryLanguage']);
}
public static function filterQueryLanguage($query) {
$query->set('lang', 'en'); // this limits the drop down results to English posts
return $query;
}
В раскрывающемся списке поиска перечислены только сообщения на английском sh. К сожалению, это ограничивает все запросы, и в функции фильтра невозможно точно узнать, возник ли этот запрос из запроса AJAX в этом раскрывающемся меню .. Кроме того, мне не удалось обнаружить язык редактируемого в данный момент сообщения (в данном случае pll_current_language()
вернул false).
Следовательно, мне нужен способ пост-фильтрации результатов только для этого выпадающего всплывающего окна и добавления языка к имени сообщения в каким-то образом. Но я понятия не имею, есть ли вообще фильтр для этого. get_posts
, похоже, не срабатывает, и даже если это так, я не хочу влиять на все запросы.
Существуют ли какие-либо дополнительные фильтры c для этой цели?