teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

PHP

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

Q&A

解決済

1回答

408閲覧

Contact Form 7 の自作ショートコード(フォームタグ)の値がメール本文で反映されない

gasri

総合スコア2

WordPress

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

PHP

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

0グッド

0クリップ

投稿2024/01/24 00:59

編集2024/01/24 01:02

0

0

実現したいこと

PHPで暗号化した文字列をトークンとして発行し、その値を使って自動返信メールにトークン付きURLとして掲載したい

発生している問題・分からないこと

PHPで発行したトークンをショートコードとして利用しようと試みたが、そのまま表示される、または何も表示されない

該当のソースコード

functions.php

1function token_url() 2{ 3 $now = time(); 4 $expiry_string = $now + (5 * 60); //5分間の制限 5 $password = 'psword'; 6 $cipher = 'AES-256-ECB'; 7 8 $encrypted_expiry_string = rawurlencode(openssl_encrypt($expiry_string, $cipher, $password)); 9 return $encrypted_expiry_string; 10} 11wpcf7_add_form_tag('token', 'token_url', true);

form

1[token token-url] 2 3===== 4 5表示結果→OK

mail_pattern1

1資料DLのURLです 2https://sample.com/test.pdf?token=[token-url] 3 4===== 5 6表示結果: 7 8資料DLのURLです 9https://sample.com/test.pdf?token= 10 11→非表示のためNG

mail_pattern2

1資料DLのURLです 2https://sample.com/test.pdf?token=[token] 3 4===== 5 6表示結果: 7 8資料DLのURLです 9https://sample.com/test.pdf?token=[token] 10 11→ショートコードのままのためNG

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

公式サイトにあったadd_actionの書き方も真似してみましたがこちらも上手く行きませんでした。

functions.php

1add_action('wpcf7_init', 'custom_add_form_tag_token'); 2 3function custom_add_form_tag_token() 4{ 5 wpcf7_add_form_tag('token', 'custom_token_form_tag_handler'); // "token" is the type of the form-tag 6} 7 8function custom_token_form_tag_handler($tag) 9{ 10 $now = time(); 11 $expiry_string = $now + (5 * 60); 12 $password = 'psword'; 13 $cipher = 'AES-256-ECB'; 14 15 $encrypted_expiry_string = rawurlencode(openssl_encrypt($expiry_string, $cipher, $password)); 16 return $encrypted_expiry_string; 17}

補足

phpにて時間制限付きトークンを発行しそれをContact Form 7のメール本文に掲載できるのであれば、ショートコードを使わなくても問題ありません。

ソース上でのおかしな点や、そもそも違う方法での実装アイディアなど、助言いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

下記を参考にして自己解決しました!
https://teratail.com/questions/166265

functions.php

1function token_url() 2{ 3 $now = time(); 4 $expiry_string = $now + (5 * 60); 5 $password = 'psword'; 6 $cipher = 'AES-256-ECB'; 7 8 $encrypted_expiry_string = rawurlencode(openssl_encrypt($expiry_string, $cipher, $password)); 9 $html = '<input type="text" name="token" value="' . $encrypted_expiry_string . '" style="pointer-events:none; display:none;" readonly>'; 10 return $html; 11} 12wpcf7_add_form_tag('token', 'token_url', true);

フォーム内ショートコード

[token token]

メール本文内ショートコード

資料DLのURLです https://sample.com/test.pdf?token=[token]

これで無事メール本文にもトークン付きURLを表示することができました。

投稿2024/01/24 03:12

gasri

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問