2009年04月08日 12:43

WordPressメモ2

| TB http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/454

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


$cat = get_the_category();
$cid = $cat[0]->cat_ID;

$posts = get_posts("numberposts=10&category=$cid&exclude=$id");

if (count($posts) > 0) {
    foreach ($posts as $post) {
        printf('<h5><a href="%s">%s</a></h5>' . "\n", get_permalink($post->ID),  $post->post_title);
    }

}

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

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


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

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

上記ページにあるように


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

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

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

テンプレート表示の流れ

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

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

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

参考サイト

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

WordPressメモ2タグ:

トラックバック

  • http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/454
コメント (0)
コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)





この情報を登録しますか?


先月アクセスが多かったページ