帖子的主语言应该保存在帖子元字段中。没有办法自动检测到这一点。甚至谷歌的启发式算法也经常失败。
因此,添加自定义字段lang
并检查…
$language = get_post_meta( get_the_ID(), \'lang\', TRUE );
…这篇文章是用什么语言写的。
更新这里是一个非常简单的语言选择器示例。它将在具有Publish 代谢箱。
get_post_meta( get_the_ID(), \'_language\', TRUE );
…将返回帖子的语言(如果可用)。
add_action( \'post_submitbox_misc_actions\', \'t5_language_selector\' );
add_action( \'save_post\', \'t5_save_language\' );
function t5_language_selector()
{
print \'<div class="misc-pub-section">
<label for="t5_language_id">Language</label>
<select name="t5_language" id="t5_language_id">\';
$current = get_post_meta( get_the_ID(), \'_language\', TRUE );
$languages = array (
\'en\' => \'English\',
\'de\' => \'Deutsch\',
\'ja\' => \'日本人\'
);
foreach ( $languages as $key => $language )
printf(
\'<option value="%1$s" %2$s>%3$s</option>\',
$key,
selected( $key, $current, FALSE ),
$language
);
print \'</select></div>\';
}
function t5_save_language( $id )
{
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX )
return;
if ( ! current_user_can( \'edit_post\', $id ) )
return;
if ( ! isset ( $_POST[\'t5_language\'] ) )
return delete_post_meta( $id, \'_language\' );
if ( ! in_array( $_POST[\'t5_language\'], array ( \'en\', \'de\', \'ja\' ) ) )
return;
update_post_meta( $id, \'_language\', $_POST[\'t5_language\'] );
}