返回本地化的HTML部件的快捷代码

时间:2016-02-01 作者:enguerranws

这是我的问题。

我制作了一个短代码,在帖子内容中创建了一个相关的文章部分。

以下是此函数的内容:

$a = shortcode_atts( array(
    \'id\' => 0,
), $atts );
if($a[\'id\'] === 0){
    $categories = get_the_category();
    $category_id = $categories[0]->cat_ID;
    $posts = query_posts(array(
        \'showposts\' => 1,
        \'orderby\' => \'rand\',
        \'cat\' => $category_id,
        \'date_query\'    => array(
            \'column\'  => \'post_date\',
            \'after\'   => \'- 90 days\'
        )
    ));
    $postID = $posts[0]->ID;
}
else {
    $postID = $a[\'id\'];
}
$post = get_post(intval($postID));
$post_trim = preg_replace(\'/((\\w+\\W*){16}(\\w+))(.*)/\', \'${1}\', $post->post_content);

$excerpt = strip_tags($post_trim).\'...\';


return \'
    <div class="rps-container" >

        <a class="rps-thumb" href="\'.get_permalink($postID).\'" >\'.get_the_post_thumbnail($postID,\'thumbnail\').\'</a>
        <div class="rps-desc">
            <span class="rps-container-title">\'.__(\'You may also like\',\'related-post-shortcode\').\'</span>
            <a href="\'.get_permalink($postID).\'" class="rps-title">\'.get_the_title( $postID ).\'</a>
    <div class="rps-excerpt">\'.$excerpt.\'</div>

        </div>
    </div>
\';
一切都很好,但您可以在那里看到一些字符串翻译。__(\'You may also like\',\'related-post-shortcode\'). 我有一个翻译输入,所以我可以在采购订单/生产任务单文件中处理它(这是最新的)。

The translation works great everywhere but in that part of returned HTML, it doesn\'t. It keep returning the default string in all languages.

我猜语言参数没有发送到该函数。但如何做到这一点呢?

1 个回复
SO网友:enguerranws

通过你的评论,我找到了我所缺少的东西。我用以下内容初始化了textdomain:

add_action(\'admin_init\', \'related_post_shortcode_init\');

function related_post_shortcode_init() {
  load_plugin_textdomain(\'related-post-shortcode\', false, basename( dirname( __FILE__ ) ) . \'/i18n\' );
}
因此,textdomain可以进行后台翻译(admin_init), 但不是像马克·卡普伦所说的那样,是正面的。

我只是添加了另一个钩子:

add_action(\'after_setup_theme\', \'related_post_shortcode_init\');

相关推荐

SHORTCODE_ATTS()中的$ATTS参数是什么?

这个WordPress developers reference page for shortcode_atts() 国家:$atts(array)(必选)用户在shortcode标记中定义的属性。但我不理解这个定义。例如,在WP Frontend Profile 插件:$atts = shortcode_atts( [ \'role\' => \'\', ], $atts ); 据我所知,shortcode\