• 解決済 myojo1

    (@myojo1)


    こんにちは。

    カテゴリの下に分類されたタグアーカイブのページのURLがとれなくて困っています。
    どなたか詳しい方がいらっしゃいましたらご教授お願いいたします。

    下記のように、カテゴリ、サブカテゴリ、タグをつけて記事を分類しようと考えています。

    [親カテゴリ]hokkaido -[サブカテゴリ]Sapporo - [タグ]chiiki
                             – [タグ]meisan

           -[サブカテゴリ]otaru  – [タグ]chiiki
                             – [タグ]meisan

    [サブカテゴリ]のページで[タグ]アーカイブのページへのリンクが必要でしたので、
    get_tag_link(21)
    の関数を使いました。

    欲しいのは
    wpトップurl/hokkaido/sapporo/tag/chiiki/
    というようなサブカテゴリの下のタグアーカイブのURLなのですが

    実際取得したリンクは
    wpトップurl/tag/chiiki/
    のようになってしまい、カテゴリを無視した全体のタグアーカイブのページのURLになってしまいます。

    どのようにしたらカテゴリー下のタグアーカイブのURLが取得できるでしょうか?

    そもそもこのようなくくり方は出来ないのでしょうか?

    よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    myojo1さん、こんにちは。

    wpトップurl/hokkaido/sapporo/?tag=chiiki

    といったようなパラメータ付きでのURLで良ければ表示できるかと思います。
    表示されているカテゴリーのタグページで良ければ、下記で取得できるはずです。

    $tag_url = add_query_arg( array( 'tag' => 'chiiki' ) );

    異なるカテゴリーやカテゴリー以外からリンクを取得するのであれば、まずカテゴリーのリンクを取得後、add_query_argを行う必要があります。

    $cat_url = get_category_link( n );
    $tag_url = add_query_arg( array( 'tag' => 'chiiki' ), $cat_url );

    ※ nはカテゴリーのID

    上記を短縮して、

    $tag_url = add_query_arg( array( 'tag' => 'chiiki' ), get_category_link( n ) );

    という書き方も可能ですが、はじめのうちは、最初の書き方の方がわかりやすいかと思います。
    `

    トピック投稿者 myojo1

    (@myojo1)

    jim912さん

    ありがとうございます!
    教えていただいた方法で、カテゴリー以下のタグのページのURLが取得できました。
    ただ、少し問題が・・・。

    ①教えていただいた方法でURLを取得すると、
    wpトップurl/hokkaido/category/sapporo/?tag=chiiki
    のように、あいだにcategory/というURLが入ってしまうのです。
    これを取る方法はありますでしょうか?

    ②このwpトップurl/hokkaido/category/sapporo/?tag=chiikiというページを開いた時、タグ用のテンプレートが適用されず、カテゴリー用のテンプレートが表示されてしまいます。

    tag.phpもtag-chiiki.phpもみに行かず、category.phpをみてしまいます。
    ※ちなみに以前のやりかたで、wpトップurl/tag/chiiki/のURLが取れてしまったときはtag.phpを見に行っていました。

    また、category.php上でis_tag()を実行するとtrueが返ってくるのですが、
    is_tag('chiiki')を実行するとfalseになってしまい、この関数を使ってそれぞれのテンプレートに切り替える、ということも出来なそうです。。

    質問ばかりで申し訳ないですが、このurlのタグアーカイブのページにタグ用のテンプレートを適応する方法が何かありましたら、ご教授ください。

    よろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    myojo1さん、こんにちは。


    WP No Category Baseというプラグインで除去できるかもしれません。


    これは、wp-inclujdes/template-loader.phpを見れば分かりますが、テンプレートの読み込み優先順がカテゴリーの方が早いためです。

    if     ( is_404()            && $template = get_404_template()            ) :
    	elseif ( is_search()         && $template = get_search_template()         ) :
    	elseif ( is_tax()            && $template = get_taxonomy_template()       ) :
    	elseif ( is_front_page()     && $template = get_front_page_template()     ) :
    	elseif ( is_home()           && $template = get_home_template()           ) :
    	elseif ( is_attachment()     && $template = get_attachment_template()     ) :
    		remove_filter('the_content', 'prepend_attachment');
    	elseif ( is_single()         && $template = get_single_template()         ) :
    	elseif ( is_page()           && $template = get_page_template()           ) :
    	elseif ( is_category()       && $template = get_category_template()       ) :
    	elseif ( is_tag()            && $template = get_tag_template()            ) :
    	elseif ( is_author()         && $template = get_author_template()         ) :
    	elseif ( is_date()           && $template = get_date_template()           ) :
    	elseif ( is_archive()        && $template = get_archive_template()        ) :
    	elseif ( is_comments_popup() && $template = get_comments_popup_template() ) :
    	elseif ( is_paged()          && $template = get_paged_template()          ) :
    	else :
    		$template = get_index_template();
    	endif;

    対処法としては、template_includeフックで読み込むテンプレートを切り替える方法もありますが、簡単なのはcategory.phpの冒頭で、is_tagで分岐させてtag.phpをincludeし、exitさせてしまうことです。is_tag('chiiki')は正しくslugが指定されていればtrueになるはずですが、解決しなければ$_GET[‘tag’] == ‘chiiki’で判別させてしまっても良いでしょう。

    トピック投稿者 myojo1

    (@myojo1)

    jim912さん

    ありがとうございます!


    なるほど。Category/は表示されてしまうのもで、除去するにはプラグインを入れる手があるんですね。試してみます。ありがとうございました。


    テンプレートの読み込み順位、勉強になりました。
    ご教授いただいた方法で、無事タグごとのテンプレートを適応することができました。

    ※やはりis_tag('chiiki')は取得できなかったのですが、$_GET['tag'] == 'chiiki'で判別させることができました。

    本当にありがとうございました。
    助かりました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カテゴリー下のタグページが取得できない。」には新たに返信することはできません。