the_category()を使ってリンク無しでカテゴリーを表示する方法【WordPress】
以前、ワードプレス初心者の知人からthe_categoryはリンク無しにできないのかと尋ねられました。その時は、こんな事考える人も居るんだなぁくらいに思っていたのですが、最近になってまた別の人(お客さん)からthe_categoryをリンク無しに…と言われました。目的はよくわかりませんが、意外に需要があるようです。
それならばという事で、今回はthe_categoryを使って、他の機能はそのまんまに、リンクだけを無効にしてみます。初心者の方でも簡単にできる方法で対応してみました。
~ 目次 ~
the_categoryにリンクを無くす機能はない
いきなりですが、the_categoryにはリンク無しで表示するような機能はありません。まぁ、リンクまで貼ってくれるから便利な訳で、そこは仕方ありませんね。今回のお客さんのように、「どうしてもulの構造はそのまま使いたい」という場合でなければ、get_the_category()を使って自由にフォーマットして利用するべきです。
ちなみにthe_categoryの使い方は前にまとめた記事があるので、基本的な使い方がわからない方はどうぞ。
⇒the_category()の使い方とセパレーター無しで出力する方法【ワードプレス】
the_categoryをリンク無しに変更するコード
以下のコードをコピーして使用中のテーマのfunctions.phpに貼り付けましょう。すべてのthe_categoryによる出力からリンクが無くなります。意外なところで使われていないか注意しましょう。
1 2 3 4 5 |
/* the_categoryからリンクを外す */ function remove_link($thelist){ return strip_tags($thelist,'<p><ul><li>'); } add_filter('the_category','remove_link'); |
アーカイブページページなどの記事一覧ページだけ、the_categoryの出力をリンク無しにしたい場合は、下のコードを使います。
1 2 3 4 5 6 7 8 |
/* the_categoryからリンクを外す */ function remove_link($thelist){ if(is_archive()){ $thelist=strip_tags($thelist,'<p><ul><li>'); } return $thelist; } add_filter('the_category','remove_link'); |
3行目のif()のカッコ内の、is_archive()をis_single()に変更すると、個別投稿ページだけthe_categoryの出力がリンク無しになります。
この方法ではマズいケース
この方法はページ上でthe_categoryが何度か使われていて、特定の場所だけ個別にリンクを消したいという場合には条件判定が難しく向いていません。その場合は次の、テンプレートを変更する方法でリンクを消すことができます。
テンプレートを変更してリンクを消す
the_categoryをページ内で複数使用していて、個別にリンクを消したい場合は、テンプレート内のリンクさせたくないthe_category()を書き換えます。
元のthe_category()のカッコ内が空の場合
1 2 |
/* 元のコード */ the_category(); |
上のように記述されている場合、上の部分をそっくりそのまま下のコードに書き換えます。
1 2 |
/* 書き換えコード */ echo strip_tags(get_the_category_list(),'<ul><li>'); |
カッコ内に記述がある場合
書き換え前のthe_category()のカッコ内に何か書いてある場合は、それをコピーして書き換えコードのget_the_category_list()のカッコ内に貼り付けます。
元のコードが下のような場合、
1 2 |
/* 元のコード */ the_category(', ','single'); |
書き換えコードは下のようになります。
1 2 |
/* 書き換えコード */ echo strip_tags(get_the_category_list(', ','single'),'<ul><li>'); |
これで、他の箇所で使用されているthe_categoryには影響を与えずに、この部分のthe_categoryだけがリンク無しになりました。
最後に
the_categoryのリンクは無事に外れたでしょうか。コード内の文字は1文字でもコピーミスしたりするとエラーが出たりしますので、最後のセミコロンまでしっかりとコピーして下さい。
the_categoryと同じ動きでリンク無しの関数を書くのは結構面倒くさいですから、リンクを外したいだけならこの方法もアリかもしれませんね。