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.  }

この情報使う分には問題ないけど、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>

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

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

テンプレート表示の流れ

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

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

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

参考サイト

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

WordPress ポケットリファレンス (POCKET REFERENCE)
作者:村上 晴美 | 価格:¥ 2,604

トラックバック(1)

2011年9月14日 13:28

[WordPress]XML-RPCを利用して外部から投稿したりする。WEBプログラム覚書

WordPressでは、XML-RPCを利用することでエントリーの投稿、取得、カテゴリの作成、編集などをブラウザで管理画面にログインすることなく出来ます。続きを読む

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.08

[Ubuntu11.10]Winows XPユーザーがUbuntuを使ってみて

Windows XPとUbuntuのデュアルブート環境にしてみておもったこと。

2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。