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

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

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

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

PHP

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

Q&A

解決済

1回答

5766閲覧

『Ultimate Member』のプロフィールページから『contact form7』へ値を受け渡す方法をご教示ください。

erio

総合スコア11

WordPress

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

PHP

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

0グッド

1クリップ

投稿2019/07/05 18:51

編集2019/07/06 14:47

前提・実現したいこと

Wordpressのプラグイン『Ultimate Member』と『contact form7』の連携で躓いています。

『Ultimate Member』で各会員ごとに生成されるプロフィールページに各会員のメールアドレスを表示し、その値をコンタクトフォームへ受け渡したいのですがうまくいかず困っております。

(ログインしている管理者や各会員のアドレスをそのまま受け渡すのではなく、管理者が各会員の個別ページを見た時に表示される各会員のアドレスをコンタクトフォームに受け渡そうとしています。)

試したこと

『Advanced Custom Fields』で各ユーザーのアドレスを通常のアドレスとは別に登録できる項目を増やし、下記サイトを参考にしてfunctions.php及び『Ultimate Member』のプロフィール用固定ページテンプレートにコードを記載しました。
http://bit.ly/2PLR5Ay

この工程だけですとメールアドレスをコンタクトフォームへ受け渡すことができず、様々な類似キーワード等で検索してみたものの力不足で解決策に辿り着けませんでした。実現したいことに対して的外れな作業を行ってしまっている可能性が高いため、初歩的な質問で恐縮ですがご指導、アドバイスよろしくお願いいたします。

該当のソースコード等

function.phpへ追記

function my_form_tag_filter($tag){ if ( ! is_array( $tag ) ) return $tag; if(isset($_POST['user_address'])){ $name = $tag['name']; if($name == 'user_address') $tag['values'] = (array) $_POST['user_address']; } return $tag; } add_filter('wpcf7_form_tag', 'my_form_tag_filter');

『Ultimate Member』のプロフィール用固定ページテンプレートへ挿入

<form action="<?php echo home_url(); ?>/contact/" method="post"> <input type="hidden" name="user_address" value="<?php the_field('user_address',$post->ID); ?>"> <input type="submit" value="フォームへ" > </form>

『contact form7』のフォーム記述内容

<label> ユーザーアドレス [text user_address readonly]</label> [submit "送信"]

『Advanced Custom Fields』の設定

フィールドラベル : ユーザーアドレス
フィールド名   : user_address
フィールドタイプ : テキスト(※Ultimate Memberのプロフィールページカスタマイズの仕様上、テキストにしないとメタキーが強制的に指定されるため)

『Ultimate Member』のプロフィールページに追加したメールアドレスの項目

タイトル :メールアドレス
メタキー :user_address

###『Ultimate Member』のプロフィールページ内、メールアドレス出力部分)のソースコード

<div class="um-row _um_row_3 " style="margin: 0 0 30px 0;"> <div class="um-col-1"> <div class="um-field um-field-user_address um-field-text um-field-type_text" data-key="user_address"> <div class="um-field-label"><label for="user_address-26">メールアドレス</label><div class="um-clear"></div></div> <div class="um-field-area"> <div class="um-field-value"><a href="mailto:mail@test.com" title="mail@test.com">mail@test.com</a></div> </div></div></div></div>

補足情報(FW/ツールのバージョンなど)

WordPress 5.2.2-ja
各プラグインは最新の状態です。

当質問に目を通していただきありがとうございます。
お手数ですが何卒よろしくお願いいたします。

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

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

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

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

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

YukiYamashina

2019/07/06 06:34

「この工程だけですと動的な表示ができず」の「動的な」というのはどういう意味でしょうか?
erio

2019/07/06 07:28

YukiYamashina様 書き込みありがとうございます。 各会員のプロフィールページは同じURLでも会員ごとに表示されるアドレスが変わるためそのような表現を用いておりましたが、回答者様から見て適切ではない、もしくはわかりにくい文言である可能性があるため該当の箇所を修正させていただきます。 実現したいのは同じURLでも表示内容が異なるページの一部データ(アドレス)をコンタクトフォームへ受け渡すことです。適切な説明ができていない箇所があり大変申し訳ありませんが、何かしらアドバイスをいただければ幸いです。よろしくお願いいたします。
guest

回答1

0

ベストアンサー

functions.php に追記したコードは、Contact Form 7 のフォームに nameuser_address の項目があれば、POST から受け取った値をセットする、というものですので、管理画面の「コンタクトフォームの編集」で

<label> メールアドレス [email user_address readonly] </label> [submit "送信"]

のようにすると表示されると思います。

追記

Ultimate Member のプロフィールページに追加した項目は、WordPress のデータベースでは wp_usermeta テーブルに保存されます。プロフィールを表示しているユーザーのユーザー ID は um_profile_id 関数で取得できますので、

php

1<form action="<?php echo home_url(); ?>/contact/" method="post"> 2<input type="hidden" name="user_address" value="<?php echo esc_attr( get_user_meta( um_profile_id(), 'user_address', true ) ); ?>"> 3<input type="submit" value="フォームへ" > 4</form>

のようにすると、登録したメールアドレスが <input type="hidden" ...>value 属性にセットされると思います。

また、

  1. Ultimate Member のプロフィールページに追加した項目を type=hidden な input 要素の value 属性に渡す(追記したコード)
  2. Contact Form 7 の wpcf7_form_tag フィルターで POST で渡された値を受け取る(function.php に追記されたコード)
  3. 受け取った POST の値を表示させる項目を Contact Form 7 のフォームに追加する(回答の最初のコード)

という処理があれば Ultimate Member から Contact Form 7 へメールアドレス情報を渡すことが可能ですので、Advanced Custom Field の設定は不要だと思います。

投稿2019/07/06 07:41

編集2019/07/06 15:53
YukiYamashina

総合スコア1011

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

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

erio

2019/07/06 08:56 編集

YukiYamashina様 ご回答ありがとうございます。 アドバイスいただいた方法を試したところ表示することはできませんでした。プロフィールページのソースコードを確認したところ、Advanced Custom Fieldsのフィールド名に入力した『user_address』が『name』ではなく『data-key』として読み込まれているためプロフィールページからコンタクトフォームへ受け渡すデータがない状態になっており、私が行ってきた手順が間違っていたことに気づきました。お手数かけて大変申し訳ございません。 取り急ぎコンタクトフォームのコードやカスタムフィールドの設定などを追記し、改めてどのように改善したら良いかを調べ直してみます。 初歩的な質問で大変恐縮ですが、現時点からどのような修正を行っていくべきかご指導・アドバイス等いただけましたら幸いです。よろしくお願いいたします。
YukiYamashina

2019/07/06 11:56

> Advanced Custom Fieldsのフィールド名に入力した『user_address』が『name』ではなく『data-key』として読み込まれているため これが確認できるような、プロフィールページのソースコードを質問に追記しておいていただけますでしょうか?
erio

2019/07/06 12:42 編集

YukiYamashina様 お返事ありがとうございます。 該当部分(『Ultimate Member』のプロフィールページ内、メールアドレス出力部分)のソースコードを質問に追記させていただきました。 何らかの部分で私の設定ミスがあるかと思われますので、お手数ですがご指摘いただければ幸いです。
YukiYamashina

2019/07/06 14:17

「『Ultimate Member』のプロフィール用固定ページテンプレートへ挿入」で書かれているコードが埋め込まれているページを表示して、(右クリック等から)ソースコードを表示させると、埋め込まれたコードはどのようになっていますでしょうか?<input type="hidden" ... の value にはメールアドレスが入っていないという状況でしょうか?
erio

2019/07/06 14:48 編集

YukiYamashina様 お返事ありがとうございます。 コードが埋め込まれたページを読み込みソースコードを表示すると下記のとおりとなっております。 <form action="https://(ドメイン)/contact/" method="post"> <input type="hidden" name="user_address" value=""> <input type="submit" class="center" value="フォームへ" > ご指摘いただいた部分は空欄となっています。
erio

2019/07/07 05:31 編集

YukiYamashina様 追記のご回答ありがとうございます。 『Ultimate Member』のプロフィール用固定ページテンプレートへ挿入したコードをご回答いただいた内容に変更したところ、無事フォームへとメールアドレスの情報が受け渡されました。ご指摘いただいた別の方法についてもテストして実装してみます。 この度は解決まで丁寧に導いてくださり本当にありがとうございました。勉強不足でお恥ずかしい限りですが、ひとつずつ課題をクリアしていけるよう精進いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問