web-dev-qa-db-ja.com

Wordpressのサイトタイトルを置き換える文字列

私は携帯電話で私のWordpressのサイトのタイトルにダッシュ ' - 'を取り除きたいです。それをするために、私はダッシュの周りにスパンを置きたいです。

望ましい結果

<h1 class="site-title">My Site Title <span class="remove-mob">-</span> Is Great</h1>

これが私の現在のPHPコードです。誰でも編集を提案できますか。そうすれば、サイトのタイトルに含まれるダッシュの周りに上記のスパンを追加できますか。

現在のコード

<h1 class="site-title"><?php bloginfo( 'name' ); ?></h1>
2
YorkieMagento

方法1

あなたはJavaScriptを使用してこれを行うことができます。

まず、h1タグのIDを追加します。ここではmobIdを使いますので、あなたのヘッダタグはこのようになります。

<h1 class="site-title" id="mobId">My Site Title - Is Great</h1>

それからハイフンを希望のコードに置き換えます。

<script>
    var myStr = document.getElementById("mobId").innerHTML;
    var newStr = myStr.replace("-", "<span class='remove-mob'>-</span>");
    document.getElementById("mobId").innerHTML = newStr;
</script>

それはもっと短く書くことができますが、私は完全なコードを書いたのであなたは何が起こっているのか知っています。

方法2

Php str_replace()を使って削除します。

<h1 class="site-title">
        <?php echo str_replace("-","<span class='remove-mob'>-</span>", get_bloginfo('name')); ?>
</h1>

get_bloginfo();を変数に保存して、引用符のせいでエラーが返される場合に備えて、代わりにそれを関数で使用することができます。

3
Jack Johansson

実際にはフィルタを使ってこれを行うことができます。 bloginfo() 関数は、実際に get_bloginfo() 関数を呼び出して結果をエコーし​​ます。

get_bloginfo() には、返される前にフィルタのbloginfoが出力に適用されます。そのため、関数の結果を変更するためにadd_filterを使うことができます。

この方法を使うと、テーマファイルを編集する必要がなくなります。

更新:私はそれがグローバル変数で一度だけ実行されることを確実にするために関数を編集しました、これはヘッダの呼び出しが最も早いと仮定してbloginfoの他のインスタンスを編集するという問題を解決するはずです。

function wpse253508_change_title( $output, $show ) {

    static $run_once;

    if ( "name" == $show && "change_title" != $run_once ) {
        $run_once = "change_title";
        $output = str_replace("-", "<span class='remove-mob'>-</span>", $output);

        return $output;
    }
    return $output;
}

add_filter( 'bloginfo', 'wpse253508_change_title', 10, 2 );
3
Tunji