ID:8rlB45KMQf/E さんの質問

1,263 views

WordPressのタグについての質問です。
タグで
名前 | スラッグ | パーマリング
デザイン | design | /tag/design
ロゴ | logo | /tag/logo
バナー | banner | /tag/banner
と設定したときに、the_tags()で出力される3つのリンクのうち、1つだけ任意のリンク先に変更することは可能でしょうか?

Tags:<a href="/tag/design">デザイン</a> , <a href="/tag/logo">ロゴ</a> , <a href="/?p123">バナー</a>

登録日:2015-07-02 · カテゴリー:WordPress・CMS

みんなの回答 2 件

2015-07-03 · ID:JPgu9KLPY6me 報告

やり方は色々あるけど
the_tags();をget_the_tagsに置き換えて、

<?php
$posttags = get_the_tags();
if ( $posttags ) {
foreach ( $posttags as $tag ) {
if($tag->slug == ’banner’){
echo ’/?123’;
}else{
echo get_tag_link( $tag->term_id );
}
}
}
?>

見たいな感じでやる。
適当に書いてるからキチンと動くように書き直してくれ
WPのリファレンスはここを見ると幸せになれる。
ttp://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_tags

もっと詳しくなりたいなら
/4.2.2/src/wp-includes/category-template.phpファイルの

① 1363行目
$term_links = apply_filters( "term_links-$taxonomy", $links );

② 1196行目
apply_filters( ’get_the_tags’, get_the_terms( $id, ’post_tag’ ) );
のフィルターフックを使って、add_filterして、正規表現で置き換えたりする。

category-template.php in tags/4.2.2/src/wp-includes – WordPr...

https://core.trac.wordpress.org/browser/tags/4.2.2/src/wp-includes/category-template.php
2015-07-03 · トピ主 報告

ちょうど、wp-includes/category-template.php しこしこ見てるとこでした。
参考になります。ありがとうございます!

2015-07-03 · トピ主 報告

function my_tag_link($link,$id) {
if($id == 3){
return ’/?p123’;
}
return $link;
}
add_filter(’tag_link’, ’my_tag_link’, 10, 2);

これで何とか行けたものの、slugで一致が出来ずです・・・

2015-07-06 · ID:JPgu9KLPY6me 報告

if($id === 3){
return get_tag_link(3);
}
return $link;
}

例えば上記のような形で、必ずURLを直接返すんじゃなくて必ずWPの関数を介して結果を返すようにしたほうがいい。そうしないと何かの拍子にスラッグが変更になったときにリンク切れの要因になる。

2015-07-06 · ID:JPgu9KLPY6me 報告

正規表現がわかるなら、slugでの一致・不一致はpreg-match使って正規表現でやってみれ。
ttp://php.net/manual/ja/function.preg-match.php

2015-07-07 · トピ主 報告

大変参考になります&slugでもやってみます。
ありがとうございます!

回答の受付は終了しました。

関連トピック