в моей теме я хочу определить серию пользовательских типов записей и пользовательских таксономий, каждая из которых имеет свой собственный настроенный слаг; базовый язык моей темы - английский, поэтому слизни будут на английском языке
например, при определении слага для пользовательских аргументов типа «product»:
'rewrite' => array( 'slug' => 'product' ),
есть ли способ перевести "слаг" через файлы po / mo? Могу ли я выразить это как:
'rewrite' => array( 'slug' => __('product', 'mytextdomain') )
или это не сработает? какова текущая практика локализации слизней?
prensa
slugprensa
. Используя WPML, переведенный слаг страницы будет таким,press
каким он не может бытьprensa
снова: / en / press /, который ничего не отображает (обратите внимание, что теперь щелкнув ссылку ES, вы не вернетесь к / prensa /). НО, если вы посещаете / en / prensa / это работает ...Ответы:
Я бы не пытался локализовать ваши слизни. Вместо этого, почему бы не дать своим пользователям возможность изменить их, добавив другое поле на страницу настроек постоянной ссылки?
Подключитесь
load-options-permalink.php
и настройте некоторые вещи, чтобы поймать$_POST
данные, чтобы сохранить ваш слаг. Также добавьте поле настроек на страницу.Затем функция обратного вызова для поля настроек:
Затем, когда вы зарегистрируете свой тип поста, возьмите слаг
get_option
. Если его там нет, используйте ваш по умолчанию.Вот часть поля настроек в виде плагина https://gist.github.com/1275867
РЕДАКТИРОВАТЬ: еще один вариант
Вы также можете изменить слаг в зависимости от того, что определено в
WPLANG
константе.Просто напишите быструю функцию, которая хранит данные ...
Затем получите слаг, где вы зарегистрируете свой собственный тип записи.
Наилучшим вариантом, IMO, было бы предоставить пользователю возможность и предоставить твердые значения по умолчанию:
источник
wpse30021
?Если это не работает Почему бы вам просто не сделать:
источник
Я делаю именно это в теме, которую мы развиваем. Он доступен на 5 разных языках, и каждый язык имеет переведенный набор категорий. Первый компонент URL-адреса в теме анализируется для определения используемого языка в формате страны:
А затем переведенные категории анализируются как дополнительные компоненты URL.
URL анализируется на
parse_request
этапе:Этот пример лишен обязательных проверок, но подразумевается только как пример.
Конечно, у этого подхода есть недостатки, но он позволяет использовать естественные URL-адреса на всех языках. Основные недостатки, которые я вижу:
1) Он не использует механизм постоянных ссылок. Скорее всего, это можно расширить, чтобы сгенерировать правильные правила постоянной ссылки для всех языков, и parse_request не понадобится, но чтобы сделать это для всех языков, потребовалась бы загрузка одного MO-файла за другим в цикле, а я этого не делаю. знаю, насколько хорошо это поддерживается.
2) Если переводчик меняет слаг, ссылки становятся недействительными.
источник
Вы можете попробовать это в своем
functions.php
как видно здесь
источник
Я бы порекомендовал не делать слизняков переводимыми .
Перевод для пользовательского контента сайта . Слагги используются внутри и только незначительно «общедоступны» при переписывании URL-адресов, и URL-адреса также не должны переводиться .
Итак: оставьте свои слизни в покое, как вы их определяете. Делайте только переводные струны, которые предназначены для общественного потребления .
источник