タイトルがちょっと意味不明ですか。(笑)
説明するのがちょっと難しいのでさっそく本編に参ります。
ランキング型のボタンリンク
SWELLの”ランキング型”はこんなレイアウトで表示されます。
①にはASP提供のバナーリンクなどを貼ります。
ここをクリックするとリンク先に変わります。
(最近は別タブではなく同ページ内で開くタイプが多いでしょうか)
そしてランキング型には②と③の2個のリンクボタンも用意されてます。
しかしながらこのリンクボタン、どちらもデフォルトで「別タブで開く」設定になってるようで、変更することもできなさそうなんですね。
ということは『詳しく見る』のボタンにサイト内部の詳細ページへのリンクを設定した場合でも強制的に別タブで開かれてしまいます。
当サイトでは「別タブで開く」設定のリンクテキストの後ろには自動的に専用のアイコンが付く設定になってるのでどちらのボタンも「別タブで開く」リンクになってるのがすぐにわかります。
(ボタンリンクの場合のみ実際は非表示に変えてますが)
ランキングですから通常は1位から5位ぐらいまでは表示させるでしょう。
でもそれぞれの『詳しく見る』ボタンをクリックするたびに別タブで開かれるのはちょっと…というのもあって、なんとか同ページで開く設定にできないものかというのが今回のカスタマイズになります。
設定方法
使い勝手 | 設置レベル |
---|---|
あれば便利 | functions.phpをいじるので 作業工程・難 |
これ以降の内容に関してはご利用の環境や使い方次第で「サイトが正常に表示されなくなった」などの障害が生じる可能性もありますため、ご利用に際しては自己責任にてお願い申し上げます。
またトラブルが生じても元の状態に戻せるようテーマのオリジナルファイルをカスタマイズする際は事前にバックアップ(コピー等)しておくことをおススメします。
なおテーマ内包のオリジナルファイルに加えた変更(カスタマイズデータ)はテーマのアップデートで元に戻ってしまいますため、カスタマイズ内容も併せてコピーするなどしておいてください。
(子テーマであればその心配はありません)
いろいろ試してみたところ、一番楽なのはfunctions.phpに設定を書き込むことでしょうか。
多少チカラ技っぽいところはありますが、その設定がこちら。
(当サイトでは子テーマに記述してます)
//広告タグ(※ランキング)のリンクから強制的にtarget="_blank" rel="noopener nofollow"を削除
add_filter('the_content','ranking_target_blank_delete',99);
function ranking_target_blank_delete($content){
$pattern = '/(<div class="p-adBox__btns"><a .*?)( target="_blank" rel="noopener nofollow")(.*?>)/';
$replacement = '$1$3';
return preg_replace($pattern,$replacement,$content);
}
これで②の『ボタン1リンク先』に内部ページへのリンクを入れても別タブで開かれることはなくなります。
③の『ボタン2リンク先』に入れたリンクは「別タブで開く」設定のままです。
今回はここまです。
コメント