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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1744閲覧

WPの add_rewrite_rule で 正規表現の結果が取得できない

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/08/10 08:13

Wordpressのプラグインで、add_rewrite_ruleを追加して /-/ のときだけ別の処理に飛ばしています。
サイトを参考にしながら、設定をしました。

php

1 public function init(){ 2 //略 3 add_action('init', array($this, 'add_api_routes')); 4 add_filter('query_vars', array($this, 'manage_api_routes_query_vars')); 5 //略 6 } 7 public function add_api_routes() { 8 add_rewrite_rule('^mypage/\-/([^/]+)/?([^/]*)/?', 'index.php?myplugin_api_action=$matches[1]&myplugin_api_key=$matches[2]', 'top'); 9 } 10 11 public function manage_api_routes_query_vars($query_vars) { 12 $query_vars[] = 'myplugin_api_action'; 13 $query_vars[] = 'myplugin_api_key'; 14 return $query_vars; 15 }

URLの内容を別なファンクション内で取得して処理を行おうとしています。

php

1 $api_action = get_query_var( 'myplugin_api_action' ); 2 $api_key = get_query_var( 'myplugin_api_key' );

しかしながら、
$api_action の値には "$matches[1]" という文字列が、
$api_key の値には "$matches[2]" という文字列が格納されています。

正規表現でマッチした内容を格納してくれません。

原因がわからず、また同様な問題の直面している事例を見つけることができずにいます。
何が原因なのでしょうか?
またどのような可能性が考えられるでしょうか?

よろしくおねがいします。

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

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

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

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

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

Daregada

2020/08/10 08:28

設定後に、WordPressの管理者のパーマリンク設定ページで「変更を保存」ボタンを押しましたか?
CHERRY

2020/08/10 08:31 編集

これらは、どのタイミングで実行しているのでしょうか? 参考にされたサイトの URL 等を質問に追記していただけないでしょうか。
guest

回答1

0

ベストアンサー

Daregadaさん、情報ありがとうございます。(質問への追記依頼欄への投稿)
WP設定の「パーマリンク設定」の更新が必要だったんですね。

調べてみると、パーマリンク処理はとても注意が必要で、

add_rewrite_rule で追加するだけではルールは適用されない

プラグインを作成や修正でリライトルールを追加したり、修正しても反映されず、
一度、プラグインを 無効➝有効 にするか、WP 設定➝パーマリンク設定で更新が必要…

そして、

プラグイン内で、リライトルールを書き換える(反映させる)には flush_rewrite_rules が必要
負荷が大きいことを理由に register_activation_hook(プラグイン有効時)が推奨されている。

「プラグイン有効時」だけにすると「プラグイン更新時」は反映されないので注意

下記に flush_rewrite_rules のタイミングとして良さそうなものを記載します。
プラグイン有効時 register_activation_hook
プラグイン無効時 register_deactivation_hook
プラグイン更新時 upgrader_process_complete

投稿2020/08/10 13:19

編集2020/08/10 13:29
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問