大抵のホームページには、お問い合せフォームがあると思います。これをWordPressに組み込んでみます。

WordPressには、WP-Contactというプラグインがありますが、確認ページがでなかったり、項目の追加が難しそうなので使いません。

PAGEのテンプレートをメールフォームとして、新規に作ります。

contact.phpというファイルを作り、PAGEのテンプレートとします。


<?php
/*
Template Name: Contact
*/

get_header();

// ここにメールフォームのスクリプトを書く

get_footer();
?>

このテンプレートを使って、「お問い合せ」というPAGEを作ります。

テンプレート内に全ての処理を書いてもいいですが、"入力","確認","完了"とファイルを別々にして読み込ませる方がいいでしょう。

注意する点として、WordPressで使用している変数がありますのでかぶらないようにしてください。また、nameやpといったクエリを与えるとWordPressの誤動作を招きますので、"f_"のような接頭語を付けた上で、input要素のname属性等に使って下さい。

この点に注意すれば、簡単なフレームワークなら組み込むことも出来ます。当然mod_rewriteを使ったURLルーティングの機能は使えません。

まず、「ニュース」というカテゴリを作成します。作成するとカテゴリIDが自動的につきます。(ここでは例としてカテゴリIDを"2"とします。)

つぎに、テンプレートのhome.phpを編集します。ニュースを表示させたい箇所に以下のコードを書きます。


<ul>
<?php
$posts = get_posts("numberposts=5&category=2&orderby=post_date");
foreach ($posts as $post):
setup_postdata($post);
?>
<li><?php the_time('Y/m/d') ?><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endforeach; ?>
</ul>


この例では、ニュースを新しいものから5件表示します。

the_date()でなくthe_time()を使っている理由は、the_date()の場合、同じ日付の記事が存在するとき、最初の記事にしか日付が表示されないためです。

the_time()の引数は、PHPのdate()関数と同じになります。

page.phpのループ外に以下のコードを入れる。


<?php 
$rows = $wpdb->get_results('select * from wp_posts where post_parent = ' . $post->ID);
if (count($rows)) {
    echo '<ul>';
    foreach ($rows as $row) {
        printf('<li><a href="%s">%s</a></li>', $row->guid, $row->post_title);
    }
    echo '</ul>';
}
?>

single.phpのループ外で以下のコードを入れる。


<?php 
$posts = get_posts('category=' . $post->category_id);
if (count($posts)):
?>
<ul>
<?php
foreach ($posts as $post) :
    setup_postdata($post);
?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

Introduction

WordPressを使って一般的な(ブログっぽくない)サイトを構築する際のポイントをまとめています。

サイト内検索

ブロとも申請フォーム

この人とブロともになる