hestiaで投稿者名を消す方法

hestiaというwordpressのテーマがあります。
無料で使いやすいので結構カスタマイズして使っている人は多いんじゃないでしょうか。
ちなみにhestiaとは、ギリシア神話で炉や竈門の女神様だそうです。へー。

wordpressですからサイト更新のためにブログ機能(投稿)は標準で使えるわけですが、ここに関してこのhestiaというテーマはほとんど何も手を加えられていません。なのでまあダサいです。


で、もっともイケてないのが投稿者名が表示されちゃうところだと思うのです。
しばしば投稿者名(author)は、wordpressのIDと同じですから(もちろん設定で変えられますが、変えてない人が多いでしょう)、セキュリティ上も投稿者名が表示されちゃうのはあまり良くないです。

巷でよく紹介されているのはcssでauthorをdisplay:noneしちゃう方法です。見た目はこれでOKですが、セキュリティ上は、HTMLソースに投稿者名が残ります。
これが嫌だな―と思って、hestia proにくっついているドキュメントを見ながらガチャガチャやってたら消せたので備忘録的に書いておきます。やり方はpro版、無料版共通です。

function.phpに以下を追加してください。
ちなみにhestia(に限らずですが)テーマをアップデートすると時々function.phpを上書きしてくれますのでバックアップを取るか、アップデート無効にしておくか、子テーマ化しておくことをおすすめします。以前はアップデートで上書きされると困る内容をfunction.phpに書くという感じだったんですが、最近は違うみたいです。

スポンサーリンク

function get_time_tags_duplicate() {
$time = ”;

$time .= ‘<time class=”entry-date published” datetime=”‘ . esc_attr( get_the_date( ‘c’ ) ) . ‘” content=”‘ . esc_attr( get_the_date( ‘Y-m-d’ ) ) . ‘”>’;
$time .= esc_html( get_the_time( get_option( ‘date_format’ ) ) );
$time .= ‘</time>’;
if ( get_the_time( ‘U’ ) === get_the_modified_time( ‘U’ ) ) {
return $time;
}
$time .= ‘<time class=”updated hestia-hidden” datetime=”‘ . esc_attr( get_the_modified_date( ‘c’ ) ) . ‘”>’;
$time .= esc_html( get_the_time( get_option( ‘date_format’ ) ) );
$time .= ‘</time>’;

return $time;
}

function remove_the_author_from_post_metadata() {

$output = sprintf(
/* translators: %1$s is the date*/
esc_html__( ‘ %1$s’, ‘hestia-pro’ ),
get_time_tags_duplicate()
);

return $output;

}

add_filter( ‘hestia_single_post_meta’, ‘remove_the_author_from_post_metadata’ );

コードを下から見てもらうとわかるんですが、簡単に解説すると
add_filterを使って、投稿用のphpの投稿者名と投稿日時のフック(hestia_single_post_meta)をまるっとremove_the_author_from_post_metadata()という関数で置き換えています(add_filterについてはこちらが詳しいです)
で、この関数の中身を空っぽにしちゃえばいいんですが、投稿日時は残しておきたいので、get_time_tags_duplicate()という、投稿日時だけをコピーする関数を作って、書き換えてます(この関数は投稿のループの中で動作しますので、ただ単にget_the_timeで良いわけです)。

ではまた。

ブログのタグ