Contact Form7にカスタムフィールドを追加する

参考:http://moralhazard.jp/2011/06/18/contact-form-7%E3%81%AE%E7%89%B9%E5%88%A5%E3%81%AA%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%BF%E3%82%B0%E3%82%92functions-php%E3%81%A7%E8%BF%BD%E5%8A%A0/
フォームタグにカスタムフィールドの値を入れる。
具体的には、カスタムフィールドで「製品番号」(p-number)というカスタムフィールドを作成
→ページ下部のフォームからメールを送信したときに、製品番号を自動で入れる
こんな感じ。

まずはフォームにショートコードを入れる
例)[product_num]
で、functions.phpに以下の記述を追加する

add_filter('wpcf7_special_mail_tags', 'my_special_mail_tags',10,2);
 
function my_special_mail_tags($output, $name)
{
    if ( ! isset( $_POST['_wpcf7_unit_tag'] ) || empty( $_POST['_wpcf7_unit_tag'] ) )
        return $output;
    if ( ! preg_match( '/^wpcf7-f(\d+)-p(\d+)-o(\d+)$/', $_POST['_wpcf7_unit_tag'], $matches ) )
        return $output;
 
    $post_id = (int) $matches[2];
    if ( ! $post = get_post( $post_id ) )
        return $output;
    $name = preg_replace( '/^wpcf7\./', '_', $name );
 
    if ( 'product_num' == $name )
        $output = get_post_meta($post->ID,'p-number',true);
    return $output;
}

以上。