HOME>情報備忘録>WordPressメモ2

WordPressメモ2

表示されてる記事と同じカテゴリの記事を表示しようと思って single.php(記事用テンプレート)に下記のように書いた。

PHP

  1. <?php
  2. $cat = get_the_category();
  3. $cid = $cat[0]->cat_ID;
  4.  
  5. $posts = get_posts("numberposts=10&category=$cid&exclude=$id");
  6.  
  7. if (count($posts) > 0) {
  8.     foreach ($posts as $post) {
  9.         printf('<h5><a href="%s">%s</a></h5>' . "\n", get_permalink($post->ID),  $post->post_title);
  10.     }
  11. }
  12. ?>

$idってグローバルなのかと思ったけど どうもif (have_posts()) : while (have_posts()) : the_post();の スコープ内で利用できる変数っぽい。 他には$templateで利用してるテンプレートのサーバパスが出てくる。 $wp_queryはWP_Queryのインスタンス。 他にもありそうだけど情報が見つけられない。

上記コード内の$postの中身。

HTML

  1. object(stdClass)#38 (24) {
  2.   ["ID"]=>string(2) "88" // 記事ID
  3.   ["post_author"]=>string(1) "3" //投稿者ID
  4.   ["post_date"]=>string(19) "2007-06-09 04:14:44" //投稿日時
  5.   ["post_date_gmt"]=>string(19) "2007-06-08 19:14:44" //投稿日時グリニッジ標準時?
  6.   ["post_content"]=>string(2186) "hogehoge" //投稿内容
  7.   ["post_title"]=>string(39) "title" //タイトル
  8.   ["post_category"]=>string(1) "0" // カテゴリID
  9.   ["post_excerpt"]=>string(227) "" //抜粋
  10.   ["post_status"]=>string(7) "publish" //公開ステータスっぽい
  11.   ["comment_status"]=>string(4) "open" //コメント受け付けるかどうか?
  12.   ["ping_status"]=>string(4) "open" //ping受け付けるかどうか?
  13.   ["post_password"]=>string(0) "" //投稿のパスワード?
  14.   ["post_name"]=>string(8) "hoge"
  15.   ["to_ping"]=>string(0) ""
  16.   ["pinged"]=>string(0) ""
  17.   ["post_modified"]=>string(19) "2009-04-02 12:48:56"
  18.   ["post_modified_gmt"]=>string(19) "2009-04-02 03:48:56"
  19.   ["post_content_filtered"]=> string(0) ""
  20.   ["post_parent"]=>string(1) "0"
  21.   ["guid"]=>string(28) "http://www.example.com/?p=88"
  22.   ["menu_order"]=>string(1) "0"
  23.   ["post_type"]=>string(4) "post"
  24.   ["post_mime_type"]=>string(0) ""
  25.   ["comment_count"]=>string(1) "0"
  26. }
  27.  

この情報使う分には問題ないけど、moreの前を表示したい時など ちょっと困る。

上記ページにあるように

HTML

  1. <ul>
  2. <?php
  3. $myposts = get_posts("numberposts=5&offset=1&category=1");
  4. foreach($myposts as $post) :
  5. ?>
  6. <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> --- <?php the_excerpt(); ?></li>
  7. <?php endforeach; ?>
  8. </ul>
  9.  

という書き方が一番いいんだろう。 けどどうも見難いんですよねー。 <?php を <? にすればまだいいけど・・・

なんとなくページ分割はmoreで分割するよりpost_excerptか カスタムフィールドで対応した方が柔軟に利用できる気がする。

テンプレート表示の流れ

このルーティングをしてるのはwp-includes/template-loader.phpっぽい。 index.php以外を削除すれば再ルーティングできる?

挙動がやっぱりわからない

やっぱ一から読んでいかないと理解できなそう。。。 下記サイトに期待したいです。

参考サイト

コア部分で多数利用されてる$wp_queryが重要そうなのはわかった。

投稿日 2009年4月 8日 12:43
カテゴリ 設定
タグ WordPress
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/994

コメント

コメントする
Name
Email Address
URL