ワードプレスのhas_translation関数の使用方法・解説

概要

has_translation関数は、翻訳テキストが存在するか調べるために使用されます。この関数は、主に以下のような場面で活用されます。

  1. 特定のカスタム投稿タイプの翻訳が存在するか確認する。
  2. 多言語対応のサイトで、表示するコンテンツが翻訳されているかどうかを判断する。
  3. 特定のカテゴリやタグの翻訳が存在するかチェックする。
  4. ユーザーが選択した言語に対して翻訳が用意されているか確認する。
  5. プラグインやテーマの設定画面で、選択した言語の翻訳を表示する。
  6. コンテンツが特定の言語で存在しない場合に代替コンテンツを表示する。
  7. 自動翻訳機能が有効な場合に、翻訳が生成されているか確認する。
  8. 翻訳が未設定のコンテンツに対して警告や通知を表示する。

構文

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

サンプルコード

  1. 特定の投稿の翻訳チェック

    $post_id = 123; // 確認したい投稿のID
    $lang_code = 'fr'; // フランス語の翻訳
    if ( has_translation( $post_id, $lang_code ) ) {
       echo 'この投稿のフランス語翻訳が存在します。';
    } else {
       echo 'フランス語の翻訳は存在しません。';
    }
    

    説明: 指定した投稿IDに対してフランス語の翻訳が存在するかを確認し、結果を出力します。

  2. カスタム投稿タイプの翻訳確認

    $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>';
       }
    }
    

    説明: カスタム投稿タイプのすべての投稿について、ドイツ語の翻訳があるかどうかをチェックし、その結果を表示します。

  3. 多言語サイトの翻訳検証

    $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の翻訳が存在するかどうかを確認し、結果を表示します。

  4. カテゴリーの翻訳確認

    $category_id = 5; // チェックするカテゴリーID
    $lang_code = 'it'; // イタリア語
    
    if ( has_translation( $category_id, $lang_code ) ) {
       echo "カテゴリーID $category_id のイタリア語翻訳があります。";
    } else {
       echo "カテゴリーID $category_id のイタリア語翻訳は存在しません。";
    }
    

    説明: 指定したカテゴリーIDに対するイタリア語の翻訳が存在するかを確認します。

  5. 投稿の翻訳がない場合の処理

    $post_id = 789; // 投稿ID
    $lang_code = 'ja'; // 日本語
    
    if ( ! has_translation( $post_id, $lang_code ) ) {
       echo 'この投稿の日本語翻訳は存在しません。代替コンテンツを表示します。';
       // 代替コンテンツの表示処理をここに書く
    }
    

    説明: 指定した投稿の日本語翻訳が存在しない場合に、代替コンテンツを表示する処理を実行します。

この関数について質問する


上の計算式の答えを入力してください