我正在使用此插件显示我帖子的阅读时间:https://jasonyingling.me/reading-time-wp/
然而,我修改了一些东西,因为我希望能够将其用于不同的语言,并改变定位。到目前为止,一切都进展顺利。唯一的小问题是,当阅读时间只有一分钟时,它会显示“分钟”(复数)一词。原来的插件有办法解决这个问题,但由于我正在翻译它,所以无法使用它。据我所知,如果我可以使用插件返回的值,这应该很容易修复,但我不知道如何做到这一点。
以下是我的内容单中当前的显示方式。php文件
<div id="rtime">
<?php pll_e( \'Reading Time:\' ); echo do_shortcode(\'[rt_reading_time]\'); pll_e( \'minutes\' );?>
</div><!-- #rtime -->
这是插件决定是显示“分钟”还是“分钟”的方式,我只是不知道如何将其应用到我的代码中。
public function rt_reading_time($atts, $content = null) {
extract (shortcode_atts(array(
\'label\' => \'\',
\'postfix\' => \'\',
\'postfix_singular\' => \'\',
), $atts));
$rtReadingOptions = get_option(\'rt_reading_time_options\');
$rtPost = get_the_ID();
$this->rt_calculate_reading_time($rtPost, $rtReadingOptions);
if($this->readingTime > 1) {
$calculatedPostfix = $postfix;
} else {
$calculatedPostfix = $postfix_singular;
}
return "
<span class=\'span-reading-time\'>$label $this->readingTime $calculatedPostfix</span>
";
}
我曾考虑过修改插件的代码本身,但当新的更新到来时,我会遇到问题,而且无论如何,我不知道该怎么做。
提前感谢!
SO网友:Morgan Estes
短代码使用“postfix”和“postfix\\u singular”,这可以通过几种方式在代码中使用。你可以直接通过你的do_shortcode()
电话:echo do_shortcode(\'[rt_reading_time postfix="minutes" postfix_singular="minute"]\')
, 但当你想使用翻译时,这并没有帮助。为此,您可以使用sprintf()
创建传递给的字符串do_shortcode()
作为参数。
示例:
$shortcode_call = sprintf(
\'[rt_reading_time postfix="%1$s" postfix_singular="%2$s"]\',
esc_html_x( \'minutes\', \'minutes plural\', \'plugin-slug\' ),
esc_html_x( \'minute\', \'minutes single\', \'plugin-slug\' )
);
echo do_shortcode( $shortcode_call );