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

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

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

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

PHP

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

Q&A

解決済

2回答

2191閲覧

コメント投稿を確認画面にリダイレクトさせたい

tuckQ

総合スコア64

WordPress

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

PHP

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

0グッド

0クリップ

投稿2016/11/13 06:39

###前提・実現したいこと

  • WordPressのコメント投稿時に、任意の確認画面にリダイレクトさせたい。
  • 確認画面はWPドキュメントルートに設置(comment_confrim.php)

###試したこと
comment-template.phpのline2199-2248にあたりにある下記のフィルターフックを利用。

php

1 $defaults = array( 2省略... 3 'action' => site_url( '/wp-comments-post.php' ), 4省略... 5 ); 6 7$args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );

カスタム関数は下記のように記述。

php

1function redirect_comment ($defaults){ 2 $defaults = array('action' => site_url( '/comment-confirm.php' )); 3 return $defaults; 4 5add_filter('comment_form_defaults', 'redirect_comment', 10, 1); 6}

###発生している問題
指定のページに遷移せず、コメント投稿がそのまま完了してしまう。

###質問
上記の処理でうまくいかない理由を教えていただけるとありがたいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

とりあえず書き方が違います。

PHP

1function redirect_comment ($defaults){ 2 $defaults = array('action' => site_url( '/comment-confirm.php' )); 3 return $defaults; 4 5// add_filter('comment_form_defaults', 'redirect_comment', 10, 1); 6}// ↓ 7 add_filter('comment_form_defaults', 'redirect_comment', 10, 1);

投稿2016/11/13 14:35

kei344

総合スコア69400

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

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

tuckQ

2016/11/14 13:28

初歩的な記述ミスで恐縮です!修正したところ動作しました。ありがとうございました!
guest

0

こんにちは。未検証ですが失礼いたします。

とりあえず自分だったら試してみることを書かせていただきます。
comment_form_defaultsというフックですがフックの一覧にないので
変えてみるとうまくいくかもしれません。

https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7

comment_save_preあたりでしょうか。

またアクションフックにもそれらしきものがありましたので
参考までに

https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7

wp_insert_commentあたりがぽいですかね。

コアファイルのcomment_form_defaultsの部分も
ざっと見てみましたが、その名の通り
コメントフォームのデフォルトを設定するもののような感じもしました。
がこのあたりはphpに詳しい方が見れば詳細がわかるかもしれませんので
達人の方に回答をお任せします。

投稿2016/11/13 09:01

ruuusaamarki

総合スコア468

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

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

tuckQ

2016/11/13 13:35

コメントいただきありがとうございます。comment_form_defaultsはフック一覧に載ってないんですね。質問にも記載したようにソース見ていると記載があるので使ってみたのですが。。。教えて頂いた2つのフックも試してみましたが、どちらも確認画面に遷移することなく投稿完了という結果でした。コメント投稿すると、最初に wp-comments-post.phpにPOSTされる仕組みのようなので、この手前に確認画面を咬ませてPOSTを受けられればいいのかなあと推測しております。
ruuusaamarki

2016/11/14 02:48

すみません、kei344さんのご指摘通り ソース修正したらリダイレクトまではできました。 comment_form_defaultsでいけますね。すみませんm(_)m
tuckQ

2016/11/14 13:30

いえいえ、わたしも試したところうまく行きました。再度ご確認いただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問