Я создаю веб-сайт WordPress с двумя языковыми поддержкой на английском и датском языках.
Я хочу сохранить строку кода языка en
для английского языка, а da
для датского языка – в запросе uri.
Например: (В настоящее время это работает для меня)
http://example.com/da
Если я посещаю почту или страницу, она должна быть такой: (Это не работает, получается 404)
http://example.com/da/post-name http://example.com/da/page-name http://example.com/da/post/is/too/long
Я также попробовал API перезаписи WordPress
add_rewrite_rule()
(Переписывайте правила, которые у меня есть)
<?php add_action('init', function () { add_rewrite_rule( '^(da|en)/?', //Regex 'index.php?lang=$matches[1]', //request to 'top' //called earlier than wordpress rules ); });
а также add_rewrite_tag()
, но я думаю, что WordPress просто предоставляет add_rewrite_endpoint
(и мне это совсем не нужно).
Я думаю, что это возможно только при условиях htaccess %{QUERY_STRING}
? (Не знаю)
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Редактировать:
Я использую WP Native Dashboard для перевода на страницах администратора, но на фронте я просто использую __()
и _e()
с файлами .mo
и .po
и отлично работает.
PS:
Эта проблема не специфична для веб-сайта WordPress, мне также нужна эта помощь с веб-сайтами на основе веб-сайтов в будущем. Предоставьте мне .htaccess правила / условия, если сможете.
Если бы я был вами, я бы использовал плагин вместо внедрения с нуля. Вы можете использовать этот плагин для многоязычного сайта wp. Этот плагин предоставляет вам три типа структуры URL-адресов;
?lang=en
/en/foo/
en.yoursite.com
Если вы хотите использовать для пользовательского сайта, вы можете использовать следующее правило перезаписи;
RewriteEngine On RewriteBase / RewriteRule ^(en|da)/(.*)$ /$2?language=$1 [QSA,L]
Я предполагаю, что вы используете language
параметр для языка
Изменить: Есть некоторые ошибки в плагине qTranslate. Эти ошибки могут быть разрешены с помощью дополнительного плагина, называемого qTranslate Slug . Не забудьте использовать этот дополнительный плагин, если у вас возникли проблемы с шаблоном url
Надеюсь, вам нужно проверить настройку сервера, если модуль перезаписи неактивен. С вашего сервера держите модуль перезаписи активным.
Я удалил свой ответ, так как кажется, что плагин должен обрабатывать переписанные URL-адреса, например example.com/da/post-name …
На данный момент WP загружается, когда вы посещаете любой URL, и отображается «WP 404 error».
ИЗМЕНИТЬ 3:
Кажется, что все работает как ожидалось в соответствии с вашим последним комментарием: «Сейчас я вручную вставляю en / da в url …»