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

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

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

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

PHP

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

Q&A

解決済

1回答

1812閲覧

Contact Form 7に値(変数)を渡したい。 bbpressに、Contact Form7を使った『通報機能』を付けたい

jo-ji

総合スコア16

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/01/15 04:29

編集2021/01/15 05:57

<追加設定>
〇子テーマ functions.phpに2関数を記載。
(1)Contact Form 7のフック関数, (2)Contact Form 7へのリンク関数

〇プラグインContact Form7 側
フォームに設定を記載(テンプレート編集)

以下、記載内容の詳細です。

<Contact Form 7のフック関数>

function my_form_tag_filter($tag){ if ( ! is_array( $tag ) ) return $tag; if(isset($_POST[get_the_title()])){ // ?bbpress topic title取得 ? $name = $tag['name']; if($name == 'your_title'){ $tag['values'] = (array) $_POST['user_address']; // 本文? } } return $tag; } add_filter('wpcf7_form_tag', 'my_form_tag_filter');

<Contact Form 7へのリンク関数>

function violation_report (){ $url = "http://----/"; $file = get_the_ID(); //topic・replyの投稿ID取得 $title="違反報告"; echo "<a href=", $url, "?post-id=$file class='button'>$title</a><br />"; } add_action ('bbp_theme_after_reply_author_details', 'violation_report') ;

<Contact form 7のフォームに以下を記載>

<label> タイトル [text your-title ] </label> <label> 本文/返信 [text your-comment ] </label> [submit "送信"]

<試したこと>
bbpressのreplyテンプレートから、Contact Form 7のテンプレートへリンク可能。
bbpress投稿IDも、Contact Form 7画面のURLに記載されます。

<できない事>
Contact Form 7のフック関数の変更方法がわかりません。
Cotnact Form 7の項目へ、トピックタイトルと本文の値を渡せません。

アドバイスをお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

以下の参考ページを元にコードを書きました。
Contact Form 7:投稿IDから記事タイトルやURLを取得しフォームに自動で入れる

functions.phpの追加コード

//wpcf7_form_tagというフックはContact Form 7で内容が出力される前に通る処理で、 //データを任意の形に変更できます。 function wpcf7_get_post_data( $tag ){ if( !is_array( $tag ) ) return $tag; //クエリに[post_id]がセットされているか $post_id = ( isset( $_GET['post_id']) && $_GET['post_id'] ) ? $_GET['post_id'] : false; //[post_id]がある場合 if( $post_id ) { if( $tag['name'] == 'title' ) { $title = get_the_title( $post_id ); $tag['values'] = array( $title ); } } return $tag; } add_filter( 'wpcf7_form_tag', 'wpcf7_get_post_data' , 11 ); // Contact Form7のテンプレートへのリンク設置(bbpressリプライページへのフック関数) function violation_report (){ $url = "http://〇〇〇/〇〇〇/violation-report/"; $file_id = get_the_ID(); //投稿ID取得 $title="違反報告"; echo "<a href=", $url, "?post_id=$file_id class='button1'>$title</a><br />"; } add_action ('bbp_theme_after_reply_author_details', 'violation_report') ;

Contact Form 7のコンタクトフォーム編集(フォーム設定)

<p>記事タイトル (必須)<br /> [text* title]</p> <p>メッセージ本文<br /> [textarea your-message]</p> <p>[submit "送信"]</p>

投稿2021/01/18 02:03

編集2021/02/05 23:41
jo-ji

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問