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

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

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

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

Q&A

0回答

541閲覧

Wordpress:add_rewrite_rule()について

taaa

総合スコア32

WordPress

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

0グッド

0クリップ

投稿2017/10/05 21:25

wordpressで、add_rewrite_rule()の実装で悩んでいます
やりたいことは、「任意のURLにアクセスがあった時に、それに応じたテンプレートファイルを読み込んで必要な情報を出力したい」ということです

functions.phpで以下のようにしていますが、うまく行きません。何が原因でしょうか。

php

1function myfunc_rewrite_rules() { 2 //①ユーザー情報を出力するページ 3 add_rewrite_rule('cm/([a-z]{3})([0-9]{5})/?$', 'index.php?pagename=cm&userID=$matches[2]', 'top'); 4 //②ユーザーの登録したサービス一覧を出力するページ 5 add_rewrite_rule('cm/([a-z]{3})([0-9]{5})/service/?$', 'index.php?pagename=cm&userID=$matches[2]&post_type 6=service', 'top'); 7 //③ユーザーの登録したサービスの詳細を出力するページ 8 add_rewrite_rule('cm/([a-z]{3})([0-9]{5})/service/([0-9]{1,})/?$', 'index.php?pagename=cm&userID=$matches[2]&post_type 9=service&serviceID=$matches[3]', 'top'); 10} 11add_action('init', 'myfunc_rewrite_rules'); 12 13function myfunc_userID_query_vars($vars) { 14 $vars[] = 'userID'; 15 $vars[] = 'serviceID'; 16 $vars[] = 'post_type 17'; 18 $vars[] = 'serviceID'; 19 return $vars; 20} 21//add query vars (userID) to wordpress 22add_filter('query_vars', 'myfunc_userID_query_vars'); 23 24function myfunc_display() { 25 $userpage = get_query_var('pagename'); 26 $userID = get_query_var('userID'); 27 $post_type = get_query_var('post_type'); 28 $serviceID = get_query_var('serviceID'); 29 30 if ('cm' == $userpage && '' == $userID ): 31//echo "show company-user list<br>"; 32 exit; 33 34 elseif ('cm' == $userpage && '' != $userID && 'service' != $post_type 35 && '' != $serviceID ): 36 $userID -= 10000; 37//echo "show specific user<br>"; 38 exit; 39 40 elseif ('cm' == $userpage && '' != $userID && 'service' == $post_type 41 && '' == $serviceID ): 42//echo "show service list page<br>"; 43 exit; 44 45 elseif ('cm' == $userpage && '' != $userID && 'service' == $post_type 46 && '' != $serviceID ): 47//echo "show service detail<br>"; 48 exit; 49 endif; 50}

rewriteルールが3つ書いてありますが、画面の出力結果としては以下のようになります
①がwordpressの404ページ
②と③がwordpressの404ではなくブラウザの404ページ
「この (ドメイン) ページが見つかりません
次の http://(ドメイン)/cm/sgn10007/service/ のウェブページは見つかりませんでした」

カスタムポストタイプ「service」用にsingle-service.phpは作ってある状況です
また、myfunc_display()の中でのif文の振り分けは成功していて、パラメータの取得についてはうまく行っているようです

何が問題でページが見つからないとなるのでしょうか
海外サイト含めてadd_rewrite_rule()については色々調べたのですが、リライトの設定については
説明しているページが多いのですが、画面出力については見つからず参っています

必要な作業とファイルについて、教えてください
よろしくお願いします!

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問