質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

1071閲覧

WordPressのfunctions.php内での条件分岐が効かない?(add_filterの、ページによる出しわけを行いたい)

yusako

総合スコア13

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2018/10/05 06:50

編集2018/10/05 08:54

前提・実現したいこと

WordPressにて、
投稿(post)とカスタム投稿(スラッグ名:blog)の年別アーカイブページについて、
投稿の年別アーカイブページ"のみ"パーマリンクをカスタマイズしたい。
具体的にはnews/というアドレスを追加して、
通常だと
http://hoge.com/2018/
こうなるところを下記のようにしたい。
http://hoge.com/news/2018/

現状は、このnews/がカスタム投稿年別アーカイブページにもついてしまい、
もともとは下記のパーマリンクが
http://hoge.com/blog/2018
このように出力されてしまう。
http://hoge.com/blog/news/2018

これを
投稿年別アーカイブはこう、
http://hoge.com/news/2018
カスタム投稿年別アーカイブはこうなるようにしたい。
http://hoge.com/blog/2018

条件分岐が必要なのだろうな、ということはわかるのだが、どこにどのような条件を入れれば実現できるのかがわかない状態。

現状で実現ていることと、できていないこと

できていること:
年別アーカイブページにnews/というアドレスを自動で追加する機能

できていないこと(実現したいこと):
news/の出しわけ
投稿ページの年別アーカイブならnews/を出し、
カスタム投稿の年別アーカイブなら出さない。

現状の該当コード(functions.phpにて)

functions.php

1function flush_rules(){ 2 global $wp_rewrite; 3 $wp_rewrite->flush_rules(); 4} 5add_filter('init','flush_rules'); 6 7 8function add_rewrite_date_link_tt150218($rules){ 9 $newrules = array(); 10 $newrules['news/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$'] = 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]', 11 $newrules['news/([0-9]{4})/([0-9]{1,2})/?$'] = 'index.php?year=$matches[1]&monthnum=$matches[2]', 12 $newrules['news/([0-9]{4})/?$'] = 'index.php?year=$matches[1]', 13 return $newrules + $rules; 14} 15add_filter('rewrite_rules_array', 'add_rewrite_date_link_tt150218'); 16 17 18function date_link_replace_tt150218($link){ 19 $wp_home_url = home_url(); 20 $link = str_replace( $wp_home_url, $wp_home_url.'/news', $link); 21 return $link; 22} 23add_filter('year_link', 'date_link_replace_tt150218'); 24add_filter('month_link', 'date_link_replace_tt150218'); 25add_filter('day_link', 'date_link_replace_tt150218');

###使用テンプレート名
投稿年別アーカイブ:archive.php
カスタム投稿年別アーカイブ:archive-blog.php

もしわかる方がおりましたら、ご教示ください。
足りない情報等ありましたら、おしらせください。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

下記のような分岐を作ることで解決しました。

function date_link_replace_tt150218($link){ if (!is_post_type_archive('blog')){ $wp_home_url = home_url(); $link = str_replace( $wp_home_url, $wp_home_url.'/news', $link); } return $link; }

投稿2018/10/05 09:29

yusako

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問