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

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

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

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

PHP

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

Q&A

1回答

1333閲覧

Contact Form 7のパイプを使ったデータ登録が上手くいかない

oichi

総合スコア1

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/06/24 22:12

現在、PHPを勉強している者です。(ほぼ初心者)
乏しい知識ですが、よろしくお願いします。

WordPressのContact Form 7というプラグインを使って、簡単な求人応募フォームを作ろうとしています。
フォームが送信されると同時にフォーム情報を使ってユーザー登録するようにしています。
Contact Form 7バージョン 5.1.3

選択した求人によって送信されるメールアドレスを別けるようにしています。
パイプを使って送信先を選択可能に

function filter_wpcf7_form_tag( $scanned_tag, $replace ) { if(!empty($scanned_tag)){ //nameで判別 if($scanned_tag['name'] == 'kyujin'){ //カスタム投稿タイプの取得 global $post; $args = array( 'posts_per_page' => -1, 'post_type' => 'post', 'order' => 'DESC', ); $customPosts = get_posts($args); if($customPosts){ foreach($customPosts as $post){ setup_postdata( $post ); //求人社名 $title = get_field('company'); //メールアドレス $mail = 'sample@mail.com'; //パイプ $scanned_tag['raw_values'][] = $title . '|' . $mail; } $pipes= new WPCF7_Pipes($scanned_tag['raw_values']); //$scanned_tagに情報を追加 $scanned_tag['values']= $pipes->collect_befores(); $scanned_tag['pipes']= $pipes; } wp_reset_postdata(); } } return $scanned_tag; }; add_filter( 'wpcf7_form_tag', 'filter_wpcf7_form_tag', 11, 2 );

これに関してはフォーム表示、送信される情報は正常に動いています。

function wpcf7_insert_user($contact_form) { $id = $contact_form->id(); if($id == 47) { //送信情報を取得 $submission = WPCF7_Submission::get_instance(); if($submission) { $formdata = $submission->get_posted_data(); $userdata = array( 'kyujin' => $formdata['kyujin'], 'simei' => $formdata['simei'], 'furigana' => $formdata['furigana'], 'seibetu' => $formdata['seibetu'], 'seinengappi' => $formdata['seinengappi'], ); //ユーザーデータ登録 $user_id = wp_insert_user($userdata); //登録に成功した場合 if(!is_wp_error($user_id)) { //ユーザーメタデータ登録 update_user_meta($user_id, 'kyujin', $formdata['kyujin']); update_user_meta($user_id, 'simei', $formdata['simei']); update_user_meta($user_id, 'furigana', $formdata['furigana']); update_user_meta($user_id, 'seibetu', $formdata['seibetu']); update_user_meta($user_id, 'seinengappi', $formdata['seinengappi']); } } } } add_action('wpcf7_mail_sent', 'wpcf7_insert_user', 10, 1);

フォーム情報を使ったユーザー登録の際に、求人$formdata['kyujin']の値が「求人社名$title」で登録されず、「メールアドレス$mail」で登録されてしまいます。

どうすれば、求人$formdata['kyujin']の値に「求人社名$title」を登録できるのかご教授いただきたいです。よろしくお願いします。

ちなみに、フォーム送信時に返信されるメールは[_raw_kyujin]を使ってで正常に求人社名で表示されています。

以下をためしてみましたが正常に動いてくれませんでした。

$formData['kyujin'][1];メールアドレスの頭文字1が登録
$formData['_raw_kyujin'];空の状態で登録

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

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

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

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

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

guest

回答1

0

wp_insert_user()の使い方が間違っている。
https://developer.wordpress.org/reference/functions/wp_insert_user/

投稿2021/06/25 03:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

oichi

2021/06/28 00:11

ありがとうございます。 しっかり勉強して再度チャレンジしてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問