質問: wp_get_current_user(); if (is_user_logged_in()) { return ' パスワード変更 新しいパスワード 新しいパスワード (再入力) '; }else{ return ' メールアドレス パスワード ログイン状態を保存する ログイン はじめての方はこちら新規会員登録 パスワードをお忘れの方 '; } } add_filter( 'wpmem_login_form', 'my_login_form_filter', 10, 2 ); ``` このようなコードで、ログイン画面など、編集できます。と書いてあったので、試してみたのですが、 他のフォームにも反映されてしまい、うまくいきません。 フォームとして、 ・ログインフォーム ・登録情報の編集 ・パスワードのリセット この3つのフォームを利用する予定です。 また、フォームを編集できたとしても、ログイン時のバリデーションなどが機能せず、 どのようなパスワードや、ユーザー名でも、ログインボタンを押せる状況になってしまいます。 ログインできませんでした。など、ボタンを押した際に、バリデーション的な表示を出力することはできるのでしょうか? とにかくやりたいことは、 ・フォームレイアウトの編集(cssでボタンなどもかえたい) ・ログイン失敗時にバリデーション的なものを起動させる です。 近い内容でも構わないので、何かご教授いただけましたら、幸いです。 よろしくお願いいたします。
回答: > > 他のフォームにも反映されてしまい、うまくいきません。 > > > 他のフォームとは、サイドバーのフォームなどのことですか? そうであれば`wpmem_login_form`というアクションフックがすべてのフォームの変更を担うアクションフックだからだと思います。 例えばサイドバーのフォームだけを変えるフックは`wpmem_sidebar_form`ですし、登録フォームは`wpmem_register_form`だと思います。 なのでご自身が変更したいフォームにあったフックを使ってあげてください。 > > ・ログイン失敗時にバリデーション的なものを起動させる > > > WP-membersのフォームをそのままコピペしたHTMLを、`my_login_form_filter`で`return`してみたらいかがでしょうか? 問題なくバリデーションは効くのでは? もしそうであれば、 Aご自身で作成したフォームの値がWP-membersの検証対象にひっかかっていない B検証対象にはなっているが、検証結果を表示するHTMLがご自身のフォームに存在しない のいずれかだと思います。 まずAの場合 ご自身のフォームの送信値も「これはWP-membersの送信値ですよ」というお知らせとともに送ってあげればよさそうです。 そういったお知らせは、`form`タグの`id`だったり、`input`タグの`name`だったりします。 というわけで、ご自身のフォームのHTMLの`form`タグや`input`タグを、WP-membersのそれと同値にしてみてはいかがでしょうか。 次にBの場合 WP-membersによる「ログインできませんでした」などが、どのようなHTMLに出力されているか確認してみてください。 それと同じHTMLをご自身のフォームに書いてあげましょう。 そうすればおそらくそのHTMLに出力できると思います。 > > ・フォームレイアウトの編集(cssでボタンなどもかえたい) > > > 普通にCSSファイルで編集できると思うのですが、CSSファイルのどこをどう編集してみた結果、効果がみられませんでしたか? それをおっしゃっていただければ助かります。 それともCSSファイルの編集自体わからない感じでしょうか? もしそうであれば、WordPressの管理画面から下記リンクの方法で変更できると思います。 またはのフォームを直接いじる方法も用意されていますので下記リンクをご参考にしていただければと思います。