Web Coding


Warning: Use of undefined constant   - assumed ' ' (this will throw an Error in a future version of PHP) in /home/wanwan888/www/wordpress01/wp-content/themes/w-note1102/single.php on line 25

2011年04月24日

WP:トップページにカスタムフィールド?

このサイトはWordPressで作られていますが
トップページの右側にある MiniDiary の部分は、
これまでHTMLファイル上で更新していました。

それを今回、WPの編集画面から投稿できるように
ソースを改修してみました。

つまり、
これまでは「新着情報」だけが、投稿記事として表示されていたのですが、
これからは「MiniDiary」も、投稿記事として扱えるようにした、のでした。

やり方は、新規にdiaryというカテゴリを作り、そのカテゴリの記事を
今のMiniDiaryの位置に、同じように表示させる、という方法をとります。
(見た目は、これまでと全く同じにします。)

*表示上の都合により、このページのコードの一部に、日本語の記号「<」「>」を使用しています。コードをコピーする際はご注意ください。すべての「<」「>」を英語表記に置き換えてご使用ください。
まず、HTMLは、MiniDiaryで元々使っていたHTMLを使います。
HTMLは下記のようになっています。

<dl>
<dt>4/17/2011</dt>
<dd>骨抜き処理された魚について思うこと。食べやすいし、病院などそれを必要とする所では、大切な存在なのだと思う。でも「骨をよけながらゆっくり食べる」「きれいに骨がとれたときはちょっぴり嬉しい」そんな食生活の方が、私は好き。</dd>
</dl>

※この<dl>~</dl>が回数分だけ連なっています。

これを前提に、MiniDiaryをWPの投稿記事として扱えるようにします。

全体の流れ
1、diary.phpファイルを作る
2、カテゴリを作る
3、ダミーの投稿記事を作る
4、index.html にコードを追加
5、「最新記事」欄に表示されないようにする

1)diary.phpファイルを作る

新しくファイルを作り、以下のコードを書く。

<?php query_posts('category_name=diary&posts_per_page=8'); ?>
<?php while(have_posts()) : the_post(); ?>
<dl>
<dt><?php the_time('m/d/Y') ?></dt>
<dd><?php the_content(); ?></dd>
</dl>
<?php endwhile; ?>

1行目は、diaryカテゴリの記事を、8件表示させるコード。
2行目以降は、dtに日付を、ddに記事を、繰り返し表示させるコード。

2)カテゴリを作る

WPの管理画面でカテゴリーを新規に作成する。
名前:diary
スラッグ:diary
と入れ、「新規カテゴリを追加」 ボタンをクリック

3)ダミーの投稿記事を作る

WPの管理画面の 投稿>新規追加 でダミーの投稿記事を書いておく。

4)index.html にコードを追加

index.htmlを開き、MiniDiaryのこれまでの記事部分(<dl>~</dl>)を
すべてコピーして、テキストファイルなどに一時避難させておく。

index.html上の<dl>~</dl>は削除し、その場所に、代わりに
<?php include (TEMPLATE . ‘/diary.php’)?>を入れる。

ここまでやったら、サイトを表示してみる。
記事のあった場所に、3で作ったダミーの原稿がみえていればOK. 

※表示されなかったら、<?php include (TEMPLATE . ‘/diary.php’)?>の
 タイプミスや、スペースが正しく入っているかなどを確認。
 実は、私は、スペースを見落としていて、表示されなくて悪戦苦闘しました…

5)「最新記事」欄に表示されないようにする

このままだと、トップページの「最新記事」欄に
diaryカテゴリの記事もいっしょに表示されてしまう。
これを表示されないようにする。

まず、管理画面のカテゴリを表示し、diaryのカテゴリIDを確認しておく。 
(カテゴリ名にマウスオーバーすると、ステータスバーにIDが表示される)
今回のdiaryのカテゴリIDは10。

再びindex.phpにもどり

<?php $temp_query = $wp_query; query_posts('posts_per_page=10&cat=-10'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

のように
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?> の前に
<?php $temp_query = $wp_query; query_posts(‘posts_per_page=10&cat=-10’); ?> を入れる。

posts_per_page=10 は10件表示する、という意味。
cat=-10 はカテゴリID10の記事は表示しない、という意味。

コードを入れたら、サイトを表示してみる。
「最新記事」からdiaryカテゴリの記事が消えていればOK。
これで、コードの修正は完了!!

PS:これまでに書いた原稿を、投稿記事に変更する
コードの変更はこれで終わりですが、
このあと、これまでに書いてきた原稿を移植しました。
4で、テキストファイルに避難しておいた原稿を
投稿記事にひとつずつ…これは手作業(涙)。 
あとから変更すると、こういう作業が必要になってしまいますね。とほほ。

今回参照させていただいた記事はこちら

特定のカテゴリーの最新記事だけ表示させたい

2011.6.13追記:「1)diary.phpファイルを作る」のコードの4行目、</dt>とするところ、間違って</p>となっていたのを修正しました。
W-Note http://wanwan.jpn.org/