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()については色々調べたのですが、リライトの設定については
説明しているページが多いのですが、画面出力については見つからず参っています
必要な作業とファイルについて、教えてください
よろしくお願いします!
あなたの回答
tips
プレビュー