プラグインでcontact-form7をインストールします。
contact-form7の形式にならってformタグを作ります。
今度は固定ページの管理画面でコンタクトページを作ります。
contactform7のショートコードを固定ページに貼り付けます。
パーマリンクをcontactに設定しておきます。
コードエディタで page-contact.php を作ります。formタグにこう書きます。
<form id="contactForm">
<?php echo apply_shortcodes( 'エラー: コンタクトフォームが見つかりません。
' ); ?>
</form>
ここからは話を変えて、元々固定ページにある内容を、index.phpなど他のphpファイルに表示させる技術をお伝えします。それには、投稿IDやカテゴリIDから投稿やカテゴリの情報を取得します。
ここではindex.phpにpage-contact.phpの内容を表示させてみましょう。結論からいうとindex.phpのformタグがあった場所にこれを貼れば完成です。
<?php
$page_id = get_page_by_path('contact');
$page = get_post($page_id);
$page_content = do_shortcode($page->post_content);
?>
<h2 class="mt-0"><?php echo $page->post_title; ?></h2>
<hr class="divider" />
<p class="text-muted mb-5"><?php echo $page_content; ?></p>
まず get_page_by_path(); で/contact の投稿idを取得します。( https://wemo.tech/911 ) 固定ページcontactを指定して お問い合わせ固定ページのidを取得します。
$page_id = get_page_by_path('contact');
次にget_post()関数で中身に投稿IDを指定して、投稿オブジェクト$pageを返します。投稿オブジェクト($page)には投稿に関する情報が配列で入っています。これはWP_Postオブジェクトといいます。
中身を表示させてみましょう。var_dump()関数を使います。
/* 投稿ID */
var_dump( $post->ID );
このように配列を指定すれば中身を取り出せます。他に中身を見てみましょう。 ( https://free-leaf.org/tomorrow/inside-post-object/ )$post->X Xに入れるもの
ID 投稿ID(整数値)
post_author 投稿のの著者ID
post_date 作成日時
post_date_gmt 作成日時(グリニッジ標準)
post_content 投稿本文
post_title 投稿タイトル
post_excerpt 投稿の抜粋
最後のdo_shortcode関数について https://developer.wordpress.org/reference/functions/do_shortcode/ 引数に$contents を入れて,そのページにあるショートコードだけを取り出します。ここでは固定ページ /contactにある ショートコードだけを取り出しています。こうすれば、contact-form7で作ったお問合せページの雛形だけ取り出すことができますよね。
$page_content = do_shortcode($page->post_content);
あとは取得したデータを表示させるだけです。
<h2 class="mt-0"><?php echo $page->post_title; ?></h2>
<hr class="divider" />
<p class="text-muted mb-5"><?php echo $page_content; ?></p>