image-wave

kumapom's page

目次っぽいページを作ってみた

このサイトのWordPressテーマ、お手製なんですが(リンク)、ナビゲーション的にちょっと問題があるなと思ってました。

そうだ、目次を作ってみよう。

という訳で、いまんとここんな感じ

WordPressはPHPだからクラスが使える

作成中じーっとソース見てると同じ処理がいっぱいあるなと思い、なんとか使い回し出来ないかと思った訳です。

クラス化。よーく考えるとWordPressはPHPだから、もしかしたらPHPのクラスを作って使い回し出来るんじゃないかと思いテスト。出来た。

作ったクラスはこんな感じ。

<?php

class postThumb{
  private $ID;

  //コンストラクタ
  public function postThumb($cat_id){
    $this->ID = $cat_id;
  }

  //表示
  public function show(){
	echo "<div class='mokuji'>"; //ラップ
	
	$postVal = 'numberposts=10&category=' . $this->ID;
	$posts = get_posts($postVal); global $post;
	$count = 0;
	foreach($posts as $post):
	setup_postdata($post);
	 echo "<ul>";
	 echo "<li class='story'>";
	 echo "<a href='"; the_permalink(); echo "'>";

	 if (has_post_thumbnail()){
	  if($count < 3){
	    the_post_thumbnail('thumb100');
	    echo "<p><span class='mTitle'>"; the_title(); echo "</span></a>";
	    the_excerpt();
	    echo "<br>";
	  }else{
	    echo "<p>"; the_title(); echo "</a>";
	  }
	 }else{
	   echo "<p>"; the_title(); echo "</a>";
	 }

	echo "</p><div class='clear'></div>";
	echo "</li>";
	echo "</ul>";
	
	$count++;
	endforeach;
	wp_reset_postdata();
	echo "</div>";
  }
}
?>

//表示するとき。postThumbにカテゴリーIDを投げて生成表示。
<?php
$Stories = new postThumb(10);
$Stories->show();
?>

何をやっているのかと言うと、カテゴリーの最近の記事の10個を持って来て、サムネイルを持っている場合と無い場合にまず分け、さらに先頭の3つ目まではサムネイルと抜粋を表示、以降はテキストだけ表示。ということをやってます。

最適化はあとからやる主義なので無駄はまだまだまだまだッ…あります。引数はコンストラクタじゃ無くて、showに投げた方がメモリ的にも優しいよねとか。obj-cで鍛えられてるなぁオレ(笑

悩んだところ

WordPressはthe_excerpt();というコマンドで抜粋表示が出来るんですが。これが出なかったり表示ずれたりして。

調べてもなかなか分からなかったんですが、どうもforeachの辺りが怪しい。これで合っているのか延々調べたあげく発見

これが必要。
setup_postdata($post);
wp_reset_postdata();

これが無いと表示おかしくなります。これ書いて無いんだよね…どこも意外と。

そう言う訳で改造は続く

とりあえずここまで出来たと言う感じ。まだ改良出来るところは沢山あるし、やりたいので暇を見て改造して行きたいと思います。

<スポンサーリンク>
[adresp]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA