这是我的问题。
我制作了一个短代码,在帖子内容中创建了一个相关的文章部分。
以下是此函数的内容:
$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.
我猜语言参数没有发送到该函数。但如何做到这一点呢?
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\');