翻訳プレス ショートコードでタイトルを翻訳したい | ワードプレス魔改造屋

翻訳プレス ショートコードでタイトルを翻訳したい

ショートコードは記事内だけではなく、テーマのテンプレート(PHP)ファイルでも使用できるとのことですのでfunctions.phpへ以下のコードを追記してみましたがうまくいきませんでした。
<?php echo do_shortcode(‘[TRSLP to=”zh-CN”]$post->post_title [/TRSLP]’); ?>

お恥ずかしながらPHP不勉強のためご教授いただければ幸甚です。
よろしくお願い致します。

コメント

  1. 2020/07/28(火) 23:18:09
    ショートコードが動かないということですが、以下テストをお願いします。
    まず、こちらの記述ですと「$post->post_title」が変数展開されません。
    一重引用符で囲まれていますのでそのまま「$post->post_title」が表示されないでしょうか?

    正しくは以下のように書きます。

    <?php echo do_shortcode('[TRSLP to="zh-CN"]' . $post->post_title . '[/TRSLP]'); ?>

    もしこれで駄目であれば「$post」オブジェクトがグローバル変数として読み込まれていない可能性がありますので、以下も試してみて下さい。

    <?php
    global $post;
    echo do_shortcode('[TRSLP to="zh-CN"]' . $post->post_title . '[/TRSLP]');
    ?>
  2. 2020/07/29(水) 11:35:01
    ご回答ありがとうございました。
    どちらも試してみましたがタイトルは翻訳されませんでした。

    ちなみに翻訳テスト、本文内で試してみましたがしっかり翻訳されます。
    • 2020/07/29(水) 12:49:17
      翻訳されないということですが、さらに原因を分割して調査して下さい。
      こちらのスクリプトを実行してみてください。
      ※一重引用符と二重引用符はそれぞれ半角をお使い下さい

      テスト1~3があります。

      <?php
      //テスト1 単体テキストを出力
      echo "こんにちは";

      //テスト2 投稿タイトルを単体で出力
      global $post;
      echo $post->post_title;

      //テスト3 ショートコードだけを単体で実行
      echo do_shortcode('[TRSLP to="zh-CN"]こんにちは[/TRSLP]');
      ?>

      テスト1が出力されない場合は、編集するテンプレートが違う可能性があります。
      テスト2が実行されない場合は、投稿オブジェクトが読み込まれていないか、読み込まれない原因があります。

      まずは、テスト1と2が問題なく表示されるかテストしてみて下さい。
      • 2020/07/29(水) 13:03:41
        追伸です。
        テーマの「functions.php」は編集するファイルではない可能性があります。
        通常は「functions.php」はテンプレート以外の処理を記述するファイルとなっています。
        ※テーマによっては投稿系処理も記述されていることがあります

        一般的に投稿を表すファイル系は「single.php」や「singular.php」といったファイル名になるかと思います。
        テーマによってファイル名は若干異なります。
        編集するファイルを今一度ご確認下さい。

        ▼参考資料 WordPress
        https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E9%9A%8E%E5%B1%A4
  3. 2020/07/29(水) 21:52:56
    ご連絡ありがとうございました!大変勉強になりました。
    ご指摘のとおりタイトルを出力するファイルsingle.phpにget_the_title()がありました。
    使用中のテーマでは
    <?php echo get_the_title(); ?>
    これを
    <?php echo do_shortcode(\'[TRSLP to=\"zh-CN\"]\' .get_the_title(). \'[/TRSLP]\'); ?>
    このように変えるとタイトルが全て翻訳されるようになりました。
    ご教授ありがとうございました!
    ちなみにループの処理で使われているthe_title()はget_the_title()に変えるとこの記述が有効なので新着記事一覧でも翻訳ができるようになりました。
    • 2020/07/30(木) 07:20:16
      目的のテンプレートファイルが見つかって良かったですね。
      無事翻訳されるようになったということで安心しました。
      引き続きよろしくお願い致します。

記事に戻る

コメントを残す