サイト運営に不可欠なお問い合わせフォーム。「Contact Form 7」はWordpressで作られたサイトにお問い合わせフォームを設置する際に便利なプラグインです。特別な知識なく簡単にフォームを組み込むことができ、ほとんどのことはContact Form 7に用意された機能で実現可能なので重宝しています。

さて、企業サイトにお問い合わせフォームを設置する場合は送信ボタンの前にプライバシーポリシーを掲載することがあります。静的にHTMLで記述するだけなら作業としては簡単なのですが、たいていサイト内にはすでにプライバシーポリシーページがあるので、どうせならその内容を自動的にそのまま読み込むようにしたいと思いますよね。フォームが複数になれば掲載するプライバシーポリシーの箇所も複数になりますし、プライバシーポリシーが改訂されるたびに何箇所も箇所を修正するのは手間がかかりますから。

方法としてはショートコードを使うことが考えられます。プライバシーポリシーページ(固定ページ)のpost_contentを取得して表示するという単純な処理です。

通常、ショートコードを追加するにはadd_shortcode()という関数を使いますが、実はContact Form 7のフォーム内ではWordpress標準のショートコードを使うことができません。そこで代わりにwpcf7_add_form_tag()という関数を使ってContact Form 7用のショートコードを追加します。
(wpcf7_add_shortcode()は非推奨となりました。)

wpcf7_add_form_tag('sc_privacy', 'func_sc_privacy');
function func_sc_privacy() {
  $privacy_content = '';
  $privacy_posts = get_posts ( 'post_type=page&pagename=privacy' );
  foreach ( $privacy_posts as $privacy_post ):
    $privacy_content = $privacy_post->post_content;
    $privacy_content = apply_filters('the_content', $privacy_content);
  endforeach;
  return $privacy_content;
}

ここではプライバシーポリシーページのスラッグを「privacy」としています。ここを変更すれば任意の固定ページのコンテンツを取得することができます。
このショートコードを使ってフォームに掲載する方法は標準のショートコードと同じで、Contact Form 7のフォーム投稿内で、

[sc_privacy]

と書くだけです。