【问题标题】:WP: Change "get_the_time('d F, Y')" date format with PolylangWP:使用 Polylang 更改“get_the_time('d F, Y')”日期格式
【发布时间】:2018-06-06 10:27:13
【问题描述】:

我有一个包含 2 种语言的 WP 主页,并使用 Polylang 插件来做到这一点;到目前为止一切顺利。

现在我安装了一个美国主题,它只提供美国日期格式的博客文章(如“2017 年 9 月 28 日”)。不幸的是,Polylang 只能正确翻译月份名称,但不会更改日期格式。

主题的博客php文件使用:

get_the_time('d F, Y')

如果我手动将该格式更改为本地日期格式,它也会将其应用于英文版本,这当然没有意义。 相反,我想挂接到 functions.php 文件并让 Polylang 通常根据页面的语言更改日期格式。

我发现这个适用于 WPML(另一个 WP 多语言插件)的 sn-p 应该可以解决问题:

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

有人知道怎么做吗?

【问题讨论】:

    标签: php wordpress datetime polylang


    【解决方案1】:

    在 WordPress 默认设置中,您可以设置自己的日期显示格式设置 -> 常规。然后您可以在 Polylang 字符串翻译功能中翻译这种格式 Language -> String translations

    如果您的主题使用自定义日期格式,这是一种不好的做法,您应该更改它或联系作者。

    应该有get_the_date() 而不是get_the_date('d F, Y'),它将从设置中以默认格式返回日期。

    如果由于某种原因您不使用 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 提供的解决方案在这种情况下将不起作用,因为它会从设置中转换日期格式,而您的主题不使用它。

    【讨论】:

    • 我应该在哪里插入这个? 'echo' 行有什么作用?
    • 我更新了我的答案。对我来说最好的选择是将 get_the_time('d F, Y') 更改为 get_the_time() 并使用字符串翻译页面翻译日期。
    • 当然,我已经联系了主题作者,他们写道,在他们的支持下,他们无法做到这一点。我也认为这是糟糕的编码,但我的 php 技能有限。
    • 你是说我可以用 get_the_time() 全局替换 get_the_time('d F, Y') 并且它有效吗?
    • 这应该可以。在您的 WordPress 设置中将日期格式更改为 d F, Y
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2022-06-12
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2020-06-22
    相关资源
    最近更新 更多