サポート » テーマ » 記事中の任意のテキスト(タグ)を置換したい。

  • 解決済 tohaku

    (@tohaku)


    1つのWPでPCとスマホ用(レスポンシブ)用のテーマと、ガラケー用のテーマを、プラグイン「Multi Device Switcher」で切り替えて使用したいと考えています。
    切り替えそのものは問題ないのですが、記事や固定ページの本文中に、<span class=”red”>などcss(外部ファイル)で文字色、サイズの装飾をしている部分があります。
    ここをガラケー用のテーマでは直接表記にしたくて、以下のページを参考にガラケー用テーマのfunction.phpにテキスト置換処理を書いてみました。
    http://kachibito.net/wordpress/replace-keywords.html

    <?php
    /* 文字列置き換え */
    function the_content_replace($text){
    $replace = array(
    // '元の文字列' => '置換する文字列'
        'class="red"' => 'style="color:#800000;"',
        'class="red-min"' => 'style="color:#800000;font-size:font-size: smaller;;"',
        'class="min"' => 'style="font-size:font-size: smaller;"'
    );
    $text = str_replace(array_keys($replace), $replace, $text);
    return $text;
    }
    add_filter('the_content', 'the_content_replace');
    ?>

    しかしこれが上手く働きません。
    どこに問題があるのか、アドバイスいただけないでしょうか。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 上記の記述は主に固定ページの本文、カスタムフィールドで追加したカテゴリの詳細説明に入っています。
    この場合は記述も変えなくてはいけないのでしょうか?

    お忙しいところ恐れ入りますが、よろしくお願いいたします。

    上記の記述は主に固定ページの本文、カスタムフィールドで追加したカテゴリの詳細説明に入っています。
    この場合は記述も変えなくてはいけないのでしょうか?

    'the_content' フィルターは、ページの本文などを the_content() テンプレートタグで出力したときのみ適用されます。
    使用中のテーマがどのテンプレートタグ(または関数)を使って本文などを出力しているか確かめれば、このフィルターで対応可能な筈かどうか判断できると思います。

    gblsmさん

    ありがとうございます。
    教えていただいたことを調べてフックとフィルターの存在をはじめて知りました。

    > 使用中のテーマがどのテンプレートタグ(または関数)を使って本文などを出力しているか
    > 確かめれば、このフィルターで対応可能な筈かどうか判断できると思います。
    こちら試行錯誤してみて、解決できなかったらまたご相談させていただきたいと思います。

    再度質問いたします。
    カスタムフィールドで追加した「カテゴリの詳細説明’cat_disc’」に該当するフックを見つけることができなかったので、function.php出の処理をあきらめて、
    こちらの記事を参考に、archive.phpのループの中に以下のように記述してみました。

    <?php
    $post_cats_disc = the_field('cat_disc',$post_id);
    $search = array('class="red"','class="red-min"','class="min"','class="mb_','class="mt_','em"');
    $replace = array('style="color:#FF0033;"','style="color:#FF0033;font-size:smaller;"','style="color:#666666;font-size: smaller;"','style="margin-bottom:','class="style="margin-top:','em;"');
    echo str_replace($search,$replace,$post_cats_disc);
    ?>

    結果としては、目的のテキストは出力できたものの置き換えはできていない状態です。
    こちら書き方に問題があるのでしょうか?
    アドバイスをいただけると嬉しいです。

    よろしくお願いします。

    モデレーター gatespace

    (@gatespace)

    カスタムフィールドは使っているプラグインによって独自の関数を実装していることがほとんどなので、プラグイン名も書いてください。

    で、関数名から Advanced Custom Fields と推測しますが、
    そうであれば the_field() では無くget_field() です

    get_field()

    ありがとうございます!
    思い通りの記述を得ることができました。

    基本的なことばかりだと思いますが、物知らずですみません。
    勉強します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「記事中の任意のテキスト(タグ)を置換したい。」には新たに返信することはできません。