【WordPress制作 】contactパーツをindex.phpに表示させよう

プラグインで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>