WP: Изменить формат даты "get_the_time ('d F, Y')" с помощью Polylang - PullRequest
0 голосов
/ 06 июня 2018

У меня есть домашняя страница WP с двумя языками, и я использую плагин Polylang для этого;пока все хорошо.

Теперь у меня установлена ​​тема для США, которая обеспечивает статьи блога только в формате даты США (например, «28 сентября, 2017»).К сожалению, Polylang только правильно переводит названия месяцев, но не меняет формат даты как таковой.

В php-файле блога темы используется:

get_the_time('d F, Y')

Если я вручную изменю этот формат на локальный формат даты, он также будет применяться к английской версии, что, конечно, не имеет смысла.Вместо этого я хочу подключиться к файлу functions.php и заставить Polylang изменить формат даты, как правило, в соответствии с языком страницы.

Я нашел этот фрагмент для WPML (другой многоязычный WP).плагин), который должен сделать трюк:

add_filter( 'option_date_format', function( $format ) {
do_action( 'wpml_register_single_string', 'Date formats', 'Date format', $format );
return apply_filters( 'wpml_translate_single_string', $format, 'Date Formats', 'Date format' );
} );

add_filter( 'option_time_format', function( $format ) {
do_action( 'wpml_register_single_string', 'Date formats', 'Time format', $format );
return apply_filters( 'wpml_translate_single_string', $format, 'Date Formats', 'Time format' );
} );

К сожалению, мне не удается сделать это для Polylang.Я знаю, что нужно использовать следующую функцию:

pll_register_string( $name, $string, $group, $multiline );

См .: https://polylang.pro/doc/function-reference/#pll_register_string

Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 06 июня 2018

В настройках WordPress по умолчанию вы можете установить собственный формат отображения даты Настройки -> Общие .Затем вы можете перевести этот формат в функцию перевода строк Polylang Язык -> Перевод строк .

Если ваша тема использует пользовательский формат даты, что является плохой практикой, вы должны изменить его или связаться с автором насделайте это.

Вместо get_the_date('d F, Y') должно быть get_the_date(), которое будет возвращать дату в формате по умолчанию из настроек.

Если по какой-то причине вы не используете формат даты из настроек WordPress, выследует зарегистрировать формат даты с помощью pll_register_string и перевести его на Язык -> Перевод строк .

/**
 * Register polylang strings to translate
 * 
 * @return void
 */
function se_50718114_register_translatable_strings() {

    $date_format = 'd F, Y';

    pll_register_string( $date_format, $date_format );
}

add_action( 'init', 'se_50718114_register_translatable_strings' );

/**
 * Somewhere in your template where you display date
 */
echo get_the_date( pll__( 'd F, Y' ) );

Решение, которое вы предоставляете для WPML, не будет работать в этом случае, поскольку оно переводит формат датыиз настроек и твоей темы не пользуйся.

...