以前、WordPress標準のリンクカードデザインを編集する方法を紹介しました。

上記の方法だと、リンクカードが埋め込みとして挿入される性質上、外部のサイトに埋め込まれた場合にも、スタイルが適用されるので、場合によってはリンクを敬遠されることがあるかも知れないので、今回は少し発展させて、内部リンクだけにデザインを適用する方法をメモとして紹介します。

内部リンクのカードのみにスタイルを適用する方法

内部リンクかどうかを判定するためには、現在表示しているページのドメインが何なのかを知る必要があります。これには以下のコードを使います。

$_SERVER['HTTP_HOST'];

まあテストするなら、以下のようにfunctions.phpなどに書いて、ソース表示すれば、先頭に結果が出るので確認できます。

echo $_SERVER['HTTP_HOST'];

これで返ってきたドメイン名を以下の関数に入れて判定させます。

function sample_embed_style(){
	$site = '返ってきたドメイン名';
	$host = $_SERVER['HTTP_HOST'];

if($site == $host){
	?>
<style>
ここにカードのスタイルを記述
</style>
<?php
}


}
add_action('embed_head','sample_embed_style');

コード内の以下の部分で、返ってきたドメインと設定したドメインが一致するかどうかを判別して、一致していれば「embed_head」にフックして「ここにカードのスタイルを記述」に書いたスタイルを適用させるわけです。

if($site == $host){

案外簡単に判別させられますね。こんなカスタマイズをしたい方には言うまでもありませんが、リンクカードのスタイルは通常のスタイルシートに書いても適用されず、「embed_head」にフックする必要がありますのでお間違いなく!


以上、このコード体系は、公式のフォーラムで似たような質問が上がっていて、どうやったら解決するかな?というのを試してみたメモです。

一応簡易的にテストしてみただけですので、確実にそうなる!というものではないかも知れませんが、気になる方は試してみてください。