Contact Form 7用のショートコードを作成する
WordPressでショートコードを追加する場合は「add_shortcode()
」という関数を使用しますが、Contact Form 7用にショートコードを追加するには「wpcf7_add_shortcode()
」という関数を使用します。本レシピではContact Form 7用のショートコードの登録方法や例を紹介します。
目次
ショートコードの登録方法
Contact Form 7のショートコードはfunctions.phpなどに下記のような形式で記載して登録します。
1 |
wpcf7_add_shortcode( 'ショートコードの名前', 'ショートコード用の関数名' ); |
「ショートコードの名前」の部分が「test
」であれば、Contact Form 7のテンプレートの中で「[test]
」と記載することでコードが使えるようになります。
ショートコード用の関数の書き方
ショートコード用の関数の書き方は下記のような形式です。
1 2 3 |
function ショートコード用の関数名() { return 表示したい内容; } |
「return」で表示したい内容を返します。( echo
などでそのまま出力してしまうと期待通りの位置に表示されないので注意してください)
例1: シンプルなショートコード (特定の文字を出力する)
「こんにちは!」と出力するだけの簡単なショートコードです。
1 2 3 4 5 6 7 |
/** * 「こんにちは!」を表示します。 */ function wpcf7_hello() { return 'こんにちは!'; } wpcf7_add_shortcode( 'hello', 'wpcf7_hello' ); |
使い方
1 |
[hello] |
出力結果
1 |
こんにちは! |
例2: 他の関数の値を使ったショートコード (トップページのURLを出力する)
他の関数を使ったショートコードです。ここでは「home_url()
」(トップページのURL)を使用しますが、「get_bloginfo('name')
」(サイト名)などいろいろなものを使用できます。
1 2 3 4 5 6 7 |
/** * トップページのURLを表示します。 */ function wpcf7_home_url() { return home_url(); } wpcf7_add_shortcode( 'home_url', 'wpcf7_home_url' ); |
使い方
1 2 3 4 5 |
<!-- リンクに使用する --> <a href="[home_url]">トップページ</a> <!-- 画像のURLに使用する --> <img href="[home_url]/img/test.png"> |
出力結果(例)
1 2 3 4 5 |
<!-- リンクに使用する --> <a href="http://example.com">トップページ</a> <!-- 画像のURLに使用する --> <img href="http://example.com/img/test.png"> |
例3: 属性(引数)を使ったショートコード
Contact Form 7のショートコードもWordPress標準のショートコードと同じく属性(引数)を扱うことができます。ただし、標準のショートコード(「属性=値
」形式)とは違って「属性:値
」形式になります。
※ 「[checkbox checkbox-1 "値1" "値2" "値3"]
」のような部分には日本語を使えるようですが、「属性:値
」形式の値部分には日本語は使えないようです。(Contact Form 7 4.3.1時点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/** * 「こんにちは!」を指定された回数表示します。 */ function wpcf7_hello_repeat( $tag ) { // タグデータを取得します。 $tag = new WPCF7_Shortcode( $tag ); $text = "こんにちは!"; // 引数を取得します。([hello_repeat count:3]の「3」の部分) $count = $tag->get_option( 'count', '', true ); // 文字を繰り返しつなげます。 $output = ''; for ( $i = 0; $i < $count; $i++ ) { $output .= $text; } return $output; } wpcf7_add_shortcode( 'hello_repeat', 'wpcf7_hello_repeat' ); |
使い方
1 |
[hello_repeat count:3] |
出力結果
1 |
こんにちは!こんにちは!こんにちは! |
例4: Contact Form 7の設定値を使ったショートコード
WPCF7_ContactForm::get_current()
と prop( 名前 )
というメソッドを経由して、Contact Form 7の設定などのデータを取得することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/** * 管理者にのみ確認用としてメールの送信先を表示します。 */ function wpcf7_test_recipient() { // フォームの設定データ一式を取得します。 $contact_form = WPCF7_ContactForm::get_current(); // データが取得でき、ユーザーが管理者の場合 if ( $contact_form && current_user_can( 'administrator' ) ) { // メールの設定値を取得します。 $mail = $contact_form->prop( 'mail' ); // 出力データを作成します。 $output = '<p>※ [管理者確認用]このフォームは下記のメールアドレスに送信されます。<br>'; $output .= esc_html( $mail['recipient'] ); $output .= '</p>'; return $output; } } wpcf7_add_shortcode( 'test_recipient', 'wpcf7_test_recipient' ); |
使い方
1 |
[test_receipient] |
出力結果
1 2 |
<p>※ [管理者確認用]このフォームは下記のメールアドレスに送信されます。<br> test@example.com</p> |
prop()で取得できる設定
prop()で取得できる値はContact Form 7 4.3.1時点では下記のとおりです。$item = $contact_form->prop( 'mail' );
のような形で取得し、さらに $item['subject']
の形で詳細項目の値を取得します。(使い方は例4を参考にしてください)
mailは「メール」の設定部分です。
項目名 | 意味 | 値の例 |
---|---|---|
subject | 題名 | [your-subject] |
sender | 送信元 | [your-name] <[your-email]> |
body | メッセージ本文 | |
recipient | 送信先 | test@example.com |
additional_headers | 追加ヘッダー | |
attachments | ファイル添付 | |
use_html | HTML 形式のメールを使用する | false |
exclude_blank | 空のメールタグを含む行を出力から除外する | false |
mail_2
mail_2は「メール(2)」の設定部分です。mailと同じ値が取得でき、さらに下記の値も取得できます。
項目名 | 意味 | 値の例 |
---|---|---|
active | メール2が有効か | false |
messages
messagesは「メッセージ」の設定部分です。
項目名 | 意味 | 値の例 |
---|---|---|
mail_sent_ok | メッセージが正常に送信された | あなたのメッセージは送信されました。ありがとうございました。 |
mail_sent_ng | メッセージの送信に失敗した | メッセージの送信に失敗しました。間をおいてもう一度お試しいただくか、別の手段で管理者にお問い合わせ下さい。 |
validation_error | 入力内容に不備が見つかった | 入力内容に不備があります。確認してもう一度送信してください。 |
accept_terms | 承諾が必要な項目が承諾されていない | 進めるには条項の承諾が必要です。 |
invalid_email | 入力されたメールアドレスの形式が正しくない | メールアドレスの形式が正しくないようです。 |
invalid_required | 入力必須の項目が入力されていない | 必須項目に記入もれがあります。 |
spam | 送信がスパムと見なされた | メッセージの送信に失敗しました。間をおいてもう一度お試しいただくか、別の手段で管理者にお問い合わせ下さい。 |
invalid_too_long | ユーザー入力が最大許容文字数を超える項目がある | この入力は長すぎます。 |
invalid_too_short | ユーザー入力が最小許容文字数に満たない項目がある | この入力は短すぎます。 |
invalid_date | 入力された日付の形式が正しくない | 日付の形式が正しくないようです。 |
date_too_early | 日付が最小制約日より小さい | 日付が早すぎます。 |
date_too_late | 日付が最大制約日より大きい | 日付が遅すぎます。 |
upload_failed | ファイルのアップロードが何らかの理由により失敗している | ファイルのアップロードに失敗しました。 |
upload_file_type_invalid | アップロードされたファイルが許可されたファイル形式に適合しない | 許可されていないファイル形式です。 |
upload_file_too_large | アップロードされたファイルが大きすぎる | ファイルが大きすぎます。 |
upload_failed_php_error | ファイルのアップロードが PHP のエラーにより失敗している | ファイルのアップロードに失敗しました。エラーが発生しています。 |
invalid_number | 入力された数値の形式が正しくない | 数値の形式が正しくないようです。 |
number_too_small | 数値が最小制約値より小さい | 数値が小さすぎます。 |
number_too_large | 数値が最大制約値より大きい | 数値が大きすぎます。 |
quiz_answer_not_correct | クイズに対する正しい答えが入力されなかった | 答えが正しくありません。 |
invalid_url | 入力された URL の形式が正しくない | URL の形式が正しくないようです。 |
invalid_tel | 入力された電話番号の形式が正しくない | 電話番号の形式が正しくないようです。 |
captcha_not_match | 入力されたコードが CAPTCHA に適合していない | 入力されたコードが正しくありません。 |
additional_settings
「その他の設定」の部分がそのまま文字列で取得できます。