サポート » プラグイン » ContactForm7 独自タグによる投稿日の引用

  • 解決済 kou16

    (@kou16)


    現在、投稿ページにコンタクトフォームを挿入し、フォーム入力データの受信は確認出来ている状態です。
    ———
    メッセージ本文:
    ———
    [your-name]
    [your-email]
    [your-email2]
    [_post_title]
    ———
    (メール送信内容は上記の通り、用意された特別メールタグによる「記事タイトル」を含むフォーム入力内容です。)

    上記、メッセージ本文にその記事の「投稿日時」を加えようと、function.php内に以下のコードを設置し、独自の特別メールタグを作りました。

    add_filter('wpcf7_special_mail_tags', 'ad_special_mail_tags', 10, 2);
    
    function ad_special_mail_tags($output, $name) {
    
    	if ("toukou_date" == $name) {
    		$output = get_the_date();
    	}
        return $output;
    };

    コンタクトフォームのメール設定側で作成した特別メールタグ[toukou_date]を挿入しても、その部分が空欄でメールが受信されてします。
    ———
    メッセージ本文:
    ———
    [your-name]
    [your-email]
    [your-email2]
    [toukou_date]
    [_post_title]
    ———

    ———
    受信メール:
    ———
    入力名前
    入力メールアドレス1
    入力メールアドレス2

    投稿タイトル
    ——–

    上記コード内の$output = get_the_date();$output = "日付";と直接入力にすると、しっかりと受信結果は「日付」と表示がされているので、独自の特別メールタグのコードは正常に動いている様子です。

    実現をしようと違うコードでも試した上で、様々なサイトやフォーラム内の有益な情報がないか探してみましたが、解決へと至る事が出来ずお手上げ状態になってしまいました。

    どなたか力になって頂けたら幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    ちょっと分からないですが、

    add_filter('wpcf7_special_mail_tags', 'ad_special_mail_tags', 10, 2);
    
    function ad_special_mail_tags($output, $name) {
    	global $post;
    	if ("toukou_date" == $name) {
    		$output = get_the_date( '', $post-ID );
    	}
        return $output;
    };

    としたらいけるかもしれません。
    ショートコードをあまり使ったことが無いもので、ショートコードの関数内で the_ 関連の関数がどういう扱いなのか分からないもので・・・

    こんにちは

    wpcf7_special_mail_tags フックでは $post はセットされていません。

    こんな感じではどうでしょうか。

    function ad_special_mail_tags( $output, $name ) {
    	if ( 'toukou_date' == $name ) {
    		$submission = WPCF7_Submission::get_instance();
    		$data = $submission->get_posted_data();
    		$post_id = absint( $data['_wpcf7_container_post'] );
    		$output = get_the_date( '', $post_id );
    	}
    	return $output;
    }

    munyaguさん、ishitakaさんリアクションが遅くなってしまい申し訳ありません。

    テストしたところ、ishitakaさんのコードで実現する事が出来ました。

    add_filter('wpcf7_special_mail_tags', 'ad_special_mail_tags', 10, 2);
    function ad_special_mail_tags( $output, $name ) {
    	if ( 'toukou_date' == $name ) {
    		$submission = WPCF7_Submission::get_instance();
    		$data = $submission->get_posted_data();
    		$post_id = absint( $data['_wpcf7_container_post'] );
    		$output = get_the_date( '', $post_id );
    	}
    	return $output;
    }

    本当にありがとうございました。

    また、迷った時にはご指導よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。