Я создаю веб-сайт 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 …»