ようこそのお運びで、厚く御礼申し上げます。
17日目です。今回は「クラス定義」について少し勉強してみたいと思います。
「記事に最新記事3件を挿入(3日目)」をクラス定義してみる。
以前作った「記事に「最新の記事」のリンクを3件入れる」のソースをクラス定義してみます。
理由としては、今はまだthe_contentなどの簡単なフックだけですが、これからソースが複雑になっていくとわかりやすいコーディング設計が必要になりそうだからです。
あと変数がダブったりしてエラーが発生するのを防ぎたい。
簡単なうちにクラス定義についても少し慣れておこうと思います。
まずは、functions.phpに書いてみます。
以前のコードはこれでした。
これを、クラス定義して、まずはfunctions.phpに以下のコードを書きました。
//オブジェクトを作成する
$paka3obj = new Paka3_NewPost;
//呼び出し
add_filter('the_content',array($paka3obj,'paka3newPosts'));
//クラス定義
class Paka3_NewPost {
public $args;
//コンストラクタ
function __construct() {
$this->args = array(
'posts_per_page'=>3,
'orderby' =>'post_date', //投稿日
'order' =>'DESC',
);
}
//新着リストメソッド
function paka3newPosts($contentData){
$posts =get_posts( $this->args );
$list="<b>最新の記事</b><ol class='delStr_ul'>";
foreach($posts as $post){
//更新日のフォーマット変更
$postDate = mysql2date('Y年m月d日', $post->post_date);
$list.="<li class='mylist_li'><a href='".get_permalink($post->ID)."' title='.$post->post_title.'>".$post->post_title."(更新日:".$postDate.")</a></li>";
}
$list.="</ol>";
return $list.$contentData;
}
}
ポイントはどこ?
ほぼ、「phpの使い方」にはなってしまいますが、簡単にまとめます。
- クラスのメソッドを呼び出すには、まずオブジェクトを生成します。
$paka3obj = new Paka3_NewPost;
- add_filterから、定義したクラスのメソッド(関数)を呼び出す。 クラスを使わない場合は
add_filter('the_content','paka3_newPosts');こんな感じで呼び出していましたが、クラスのメソッドを呼び出す場合は、生成したオブジェクトを指定します。
add_filter('the_content',array($paka3obj,'paka3newPosts'));
- クラスの定義「Paka3_NewPost」
- コンストラクタには、初期値を設定しています。
function __construct() { //初期値 }
- 関数を設定して、命令を記入しています。
function paka3_newPosts($contentData){ //命令 }
- 今回は、内容についてはちょっと適当かもしれません。 クラスを使うという雰囲気がわかればいいかな。
コードをプラグイン用のファイルにします
それではfunctions.phpに書いたコードを消して、 「Paka3_NewPost.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回はクラスを定義してみました。最初、プラグインでクラスを使えるってことを知らなかったのですが、調べてみると意外と簡単に使えることを発見。しばらくはクラスを使うのを控えますが、使える命令等は積極的に使っていこうかなーっと思ったりもしています。まだわかりませんが・・・お後がよろしいようで。