サポート » 使い方全般 » 管理画面の文言置換(カスタム投稿別)

  • 解決済 gcr005

    (@gcr005)


    お世話になっております。

    管理画面のテキスト変更を
    一つのカスタム投稿タイプだけに適応したく、
    以下のサイトを参考にさせていただき
    http://www.warna.info/archives/1581/
    functions.phpに以下のコードを書きました。

    function custom_gettext( $translated, $text, $domain ) {
    $custom_translates = array(
    ‘post_type’ => ‘hoge,
    ‘default’ => array(
    ‘下書きとして保存’ => ‘保存して内容を確認する’,
    ‘レビュー待ちとして送信’ => ‘投稿する’,
    )
    );
    if ( isset( $custom_translates[$domain][$translated] ) ) {
    $translated = $custom_translates[$domain][$translated];
    }
    return $translated;
    }
    add_filter( ‘gettext’, ‘custom_gettext’, 10, 3 );

    function trans_custom_gettext() {
    $args = func_get_args();
    $translated = $args[0];
    $text = $args[1];
    $domain = array_pop( $args );
    $translated = custom_gettext( $translated, $text, $domain );
    return $translated;
    }
    add_filter( ‘gettext_with_context’, ‘trans_custom_gettext’, 10, 4 );
    add_filter( ‘ngettext’, ‘trans_custom_gettext’, 10, 5 );
    add_filter( ‘ngettext_with_context’, ‘trans_custom_gettext’, 10, 6 );

    全てのカスタム投稿タイプの文言が変更できて
    それはありがたいのですが、一つだけ変更するように

    ‘post_type’ => ‘hoge,

    と入れたのですが反応ありません…。

    お分かりの方がいらっしゃったら
    ぜひ教えていただけないでしょうか?

    よろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • add_filter('gettext', 'change_admin_cpt_text_filter', 20, 3);
    
    function change_admin_cpt_text_filter( $translated_text, $untranslated_text, $domain ) {
    
      global $typenow;
      // hogeをご自身のカスタム投稿タイプに変更
      if( is_admin() && 'hoge' == $typenow )  {
    
        //make the changes to the text
        switch( $untranslated_text ) {
    
            case '下書きとして保存':
              $translated_text = __( '保存して内容を確認する','text_domain' );
            break;
    
            case 'レビュー待ちとして送信':
              $translated_text = __( 'レビュー待ちとして送信','text_domain' );
            break;
         }
       }
       return $translated_text;
    }

    上記コードでどうでしょうか?
    といっても、codexからとってきただけですが。。。
    http://codex.wordpress.org/Plugin_API/Filter_Reference/gettext

    トピック投稿者 gcr005

    (@gcr005)

    ishihara takashiさま

    お世話になっております。
    お忙しい中教えていただきありがとうございました。

    functions.phpに書き込んでみたのですが
    反応がありません…。
    エラー表示やホワイトアウトしたわけではないのですが。

    よろしくお願い致します。

    ishihara takashi さんの書き換えでいいと思いますが、switch で指定するのが、翻訳前の文字列となります。パラメータで受けた $untraslated_text は書き変わらないからです。case 以下を下のようにするとどうでしょう?

    case 'Save Draft':
        $translated_text = '保存して内容を確認する';
        break;
    case 'Save as Pending':
        $translated_text = 'レビュー待ちとして送信';
        break;

    この場合、日本語じか打ちになってしまう(gettext が必要ない)のと、ここで text_domain を指定してもテーマのものになるので、上のようにかえました。

    トピック投稿者 gcr005

    (@gcr005)

    kjmtshさま

    お世話になっております。

    お返事遅くなりまして大変申し訳ありませんでした。

    おかげさまで解決しました!
    ありがとうございます。

    add_filter(‘gettext’, ‘change_admin_cpt_text_filter’, 20, 3);

    function change_admin_cpt_text_filter( $translated_text, $untranslated_text, $domain ) {

    global $typenow;
    // hogeをご自身のカスタム投稿タイプに変更
    if( is_admin() && ‘hoge’ == $typenow ) {

    //make the changes to the text
    switch( $untranslated_text ) {

    case ‘Save Draft’:
    $translated_text = ‘変換後のテキスト’;
    break;
    case ‘Save as Pending’:
    $translated_text = ‘変換後のテキスト’;
    break;
    }
    return $translated_text;
    }

    お二人に教えていただいたコードで
    無事解決しました。

    ishiharaさま、kjmtshさま
    本当にありがとうございました。

    よろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「管理画面の文言置換(カスタム投稿別)」には新たに返信することはできません。