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

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

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

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

Q&A

解決済

1回答

880閲覧

Wordpress:コメントのエラーメッセージ

taaa

総合スコア32

WordPress

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

0グッド

0クリップ

投稿2017/08/28 01:48

編集2017/08/28 03:41

Wordpress(4.8.1)のコメントをカスタマイズしようとしています
具体的には、入力必須項目の追加と、それに応じてエラーメッセージを変更したいと考えています

デフォルトで存在する入力フィールドの「名前」「メールアドレス」が必須設定されているのですが
そのエラーメッセージ「ERROR: please fill the required fields (name, email).」の出力は
どこで定義されているんでしょうか?

ググって調べて見たのですが、jqueryで変更するなどのサンプルは見つかったものの、phpでwpファイルを編集して対応したいと考えています

ご回答、どうぞよろしくお願いします

現状まで、自分で調べた範囲のことは以下のとおりです

1)デフォルトのコメントフィールド(name,email)の入力チェックは /wp-include/comment.php のwp_handle_comment_submission()で処理されている

2)テーマ内のfunction.phpで以下のようにした場合、1の処理のあとに実行される
add_filter( 'preprocess_comment', 'verify_comment_meta_data' );
function verify_comment_meta_data( $commentdata ) {
if ( empty( $_POST['additional_field'] ) )
wp_die( __( 'Error: please fill the required field (additional_field).' ) );
return $commentdata;
}

3)気持ち悪いから1と2を同時にしたいのですが、wp_handle_comment_submission()の処理前のタイミングで実行できるフィルターフックや方法はないのでしょうか
(wp-include/comment.phpを直接編集する方法は取りたくない)

ない場合、結局コメントのsubmitを捕捉してjsを使った処理をするしかないのでしょうか

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/08/28 06:58

言語は英語で運用するのでしょうか?
guest

回答1

0

ベストアンサー

言語が英語なのか日本語なのか不明なんですが、英語だとすると

function my_original_text( $translated ) { if ( $translated === '<strong>ERROR</strong>: please fill the required fields (name, email).' ) { $translated = "任意の表示したい文言"; } return $translated; } add_filter( 'gettext', 'my_original_text' );

こんな感じで変更できます。

もし日本語だったらifの部分を以下にすれば良いです。

if ( $translated === '<strong>エラー</strong>: 必須項目 (名前、メールアドレス) を入力してください。' ) {

書き換えが他の部分に影響する場合は

if ( is_single() && $translated === 'Email' ) { $translated = 'めーるあどれす'; }

is_single()等でページを限定すれば良いです。

投稿2017/08/28 08:15

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

taaa

2017/08/31 08:26

ご回答ありがとうございます 単に文字を置き換えるのではなく、デフォルトのname,emailのバリデートと追加した項目のバリデートを 同時にしたいという質問だったのですが… 質問・説明が下手だったようで申し訳ないです 自己解決しました (管理画面のディスカッションから「名前とメールアドレスの必須を解除」をして、 add_filterで入力値をチェックするアクションを作成しました)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問