概要
has_translation関数は、翻訳テキストが存在するか調べるために使用されます。この関数は、主に以下のような場面で活用されます。
- 特定のカスタム投稿タイプの翻訳が存在するか確認する。
- 多言語対応のサイトで、表示するコンテンツが翻訳されているかどうかを判断する。
- 特定のカテゴリやタグの翻訳が存在するかチェックする。
- ユーザーが選択した言語に対して翻訳が用意されているか確認する。
- プラグインやテーマの設定画面で、選択した言語の翻訳を表示する。
- コンテンツが特定の言語で存在しない場合に代替コンテンツを表示する。
- 自動翻訳機能が有効な場合に、翻訳が生成されているか確認する。
- 翻訳が未設定のコンテンツに対して警告や通知を表示する。
構文
has_translation( $post_id, $lang_code );
パラメータ
$post_id(int): チェックしたい投稿のID。$lang_code(string): 確認したい言語コード(例: ‘fr’, ‘de’ など)。
戻り値
bool: 指定された言語の翻訳が存在する場合はtrue、存在しない場合はfalseを返します。
関連する関数
使用可能なバージョン
has_translation関数は、WordPress 5.8以降で使用可能です。
コアファイルのパス
wp-includes/l10n.php
この関数のアクションでの使用可能性
| アクション | 使用可能性 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
-
特定の投稿の翻訳チェック
$post_id = 123; // 確認したい投稿のID $lang_code = 'fr'; // フランス語の翻訳 if ( has_translation( $post_id, $lang_code ) ) { echo 'この投稿のフランス語翻訳が存在します。'; } else { echo 'フランス語の翻訳は存在しません。'; }説明: 指定した投稿IDに対してフランス語の翻訳が存在するかを確認し、結果を出力します。
-
カスタム投稿タイプの翻訳確認
$post_type = 'custom_post'; // カスタム投稿タイプ $lang_code = 'de'; // ドイツ語の確認 $posts = get_posts( array( 'post_type' => $post_type ) ); foreach ( $posts as $post ) { if ( has_translation( $post->ID, $lang_code ) ) { echo $post->post_title . ' のドイツ語翻訳があります。<br>'; } }説明: カスタム投稿タイプのすべての投稿について、ドイツ語の翻訳があるかどうかをチェックし、その結果を表示します。
-
多言語サイトの翻訳検証
$languages = array( 'fr', 'de', 'es' ); // チェックする言語 $post_id = 456; // 投稿ID foreach ( $languages as $lang ) { if ( has_translation( $post_id, $lang ) ) { echo "投稿ID $post_id の$lang の翻訳があります。<br>"; } else { echo "投稿ID $post_id の$lang の翻訳はありません。<br>"; } }説明: 複数の言語に対して、指定した投稿IDの翻訳が存在するかどうかを確認し、結果を表示します。
-
カテゴリーの翻訳確認
$category_id = 5; // チェックするカテゴリーID $lang_code = 'it'; // イタリア語 if ( has_translation( $category_id, $lang_code ) ) { echo "カテゴリーID $category_id のイタリア語翻訳があります。"; } else { echo "カテゴリーID $category_id のイタリア語翻訳は存在しません。"; }説明: 指定したカテゴリーIDに対するイタリア語の翻訳が存在するかを確認します。
-
投稿の翻訳がない場合の処理
$post_id = 789; // 投稿ID $lang_code = 'ja'; // 日本語 if ( ! has_translation( $post_id, $lang_code ) ) { echo 'この投稿の日本語翻訳は存在しません。代替コンテンツを表示します。'; // 代替コンテンツの表示処理をここに書く }説明: 指定した投稿の日本語翻訳が存在しない場合に、代替コンテンツを表示する処理を実行します。