短码内部本地化不起作用

时间:2020-10-08 作者:user2516117

我使用一个快捷码来检索woocommerce产品的url并建立链接:

function woo_url_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        \'id\' => null,
    ), $atts, \'bartag\' );
    $html = \'\';
    if( intval( $atts[\'id\'] ) > 0 && function_exists( \'wc_get_product\' ) ) {
        $_product = wc_get_product( $atts[\'id\'] );
        $html = $_product->get_permalink();
    }
    $text = \'Some text\';
        return \'<p class="woo-booking"><a href="\'.$html.\'">\'.$text.\'</a></p>\';
}
工作正常。但现在我需要这样翻译文本:

esc_html_e( \'Some text\', \'generatepress-child\' );
因此,代码是:

function woo_url_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        \'id\' => null,
    ), $atts, \'bartag\' );
    $html = \'\';
    if( intval( $atts[\'id\'] ) > 0 && function_exists( \'wc_get_product\' ) ) {
        $_product = wc_get_product( $atts[\'id\'] );
        $html = $_product->get_permalink();
    }
        return \'<p class="woo-booking"><a href="\'.$html.\'">\'.esc_html_e( \'Some text\', \'generatepress-child\' ).\'</a></p>\';
}
语言文件已经存在并正在运行。但不能使用此短代码。字符串已翻译,但显示在页面顶部,并重复多次。我到底遗漏了什么,我该如何修复?

非常感谢。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

esc_html_e() 显示器(echo) 输出,因此它出现在错误的位置。所以你应该使用esc_html__() 返回已翻译的字符串。

相关推荐

Shortcode called twice

我正在使用一个快捷代码处理我的产品信息,它可以自动生成一个包含信息的表。但这个短代码似乎被调用了两次。我不是一个优秀的后端开发人员,但我正在努力学习一些基础知识,以便能够制作一些基本的PHP函数。我非常感谢你的帮助。提前谢谢。我的代码如下所示:function displayTable() { echo \'<table>\'; echo \'<tbody>\'; $fields = get_field_objects();&