HABAKIRI_フィルターフックとクラス拡張
前回のentyri_metaカスタマイズがポンコツだったので、再度あれこれ。
フィルターフックについては、マニュアルが若干違うというか、汎用的な書き方しているためコピペすると失敗するので、改めて。
functions.php
class Habakiri extends Habakiri_Base_Functions { public function __construct() { parent::__construct(); add_filter( 'habakiri_entry_meta', array( $this, 'habakiri_entry_meta' )); } function habakiri_entry_meta( $entry_meta ) { global $post; $entry_meta = '<li>' . get_the_date() . '</li>'; return $entry_meta; }
これでentry_meta部分に日付のみが出るようになる。
ただ今回、どうせだったらhabakiriのクラスをどうにか利用したかったので、最終的に下記の形になった。
modules/entry-meta.php
require_once get_stylesheet_directory() . '/inc/class.my-entry-meta.php'; $EnetryMeta = new my_Habakiri_Entry_Meta(); $EnetryMeta->display();
inc/class.my-entry-meta.php
class my_Habakiri_Entry_Meta extends Habakiri_Entry_Meta { public function display() { do_action( 'habakiri_before_entry_meta' ); ?> <div class="entry-meta"> <ul class="entry-meta__list"> <?php $entry_meta = $this->published(); $entry_meta .= $this->categories(); $entry_meta .= $this->tags(); $entry_meta .= $this->taxonomies(); echo apply_filters( 'habakiri_entry_meta', $entry_meta ); ?> </ul> <!-- end .entry-meta --></div> <?php do_action( 'habakiri_after_entry_meta' ); } }
my-entry-meta.phpでHabakiri_Entry_Metaをオーバーライド。それをentry-meta.phpで呼び出す形にしてる。
とりあえずはこれで問題なく動いてるようです。