Habakiriのカスタマイズ

Wordpressのテーマ「Habakiri」で、entry-metaをカスタマイズした。entry-metaは、投稿記事の更新日とかカテゴリとかある部分のところ。
マニュアル https://habakiri.2inc.org/manual/filter-hooks/では、フィルターフックが使える。
実際、たとえば空タグの追加なんかはこっちでもテストできた。
functions.php

function my_habakiri_entry_meta( $entry_meta ) {
	$entry_meta .= '<li></li>';
	return $entry_meta;
}
add_filter( 'habakiri_entry_meta', 'my_habakiri_entry_meta' );

ただ、すでに入っている$entry_metaの中身を空にするのはできても、そこから新しく入れなおすのにちょっと失敗した。
クラスの外ということでか、inc/class.entry-meta.phpの中身をコピーしても動かない。
動かなかった例(たぶん)

function my_habakiri_entry_meta( $entry_meta ) {
	$entry_meta  = $this->published();
	$entry_meta .= $this->updated();
	$entry_meta .= $this->author();
	$entry_meta .= $this->categories();
	$entry_meta .= $this->tags();
	$entry_meta .= $this->taxonomies();
	return $entry_meta;
}
add_filter( 'habakiri_entry_meta', 'my_habakiri_entry_meta' );

根本的に書き方が間違ってるだけかもしれないが、おそらくはpublished()などはprotectedのため、クラスの外からは使えない、ということだろう。たぶん。
自力で$entry_metaの中身を書けばいいとも思ったが、どうせだったらすでにあるものを利用したい。
なので、思い切って、class:Habakiri_Entry_Metaを上書きしてみることにした。
まず、modules/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' );
	}
}

$EnetryMeta = new my_Habakiri_Entry_Meta();
$EnetryMeta->display();

とすると、とりあえずうまく動いたっぽい。
これ、よく考えたら、リストじゃなくって定義タグにしたい、とかいうときにも使えるかも。