WordPress

テーマSydneyの投稿記事にタグが複数ある場合にタグ間に「0」が入るのを回避する

 

テーマSydneyで投稿記事の複数タグの間に0が入った状態

ワードプレスのテーマSydneyを使ったこのサイト、投稿ページの見た目のカスタマイズは考えていなかったのですが、タグが複数設定されている場合に、タグ間に「0」が出てしまうのは、このサイトのバグっぽく見えてしまうので、以下のように対応しました。

1.どの関数で表示させているか調べる

よくわかってなくて、ここに時間がかかりました。

codex日本語版でタグ名を取得するのが、get_the_tag_listテンプレートであることがわかりました。

Sydneyの場合は、/wp-content/themes/sydney/inc/template-tags.phpのsydney_entry_footer関数でタグ名を取得して表示していることがわかりました。該当箇所は以下の太字部分ですが、「 . __(」がよくわからず、調べきれませんでした。

if ( ! function_exists( 'sydney_entry_footer' ) ) :
/**
 * Prints HTML with meta information for the categories, tags and comments.
 */
function sydney_entry_footer() {
	// Hide category and tag text for pages.
	if ( 'post' == get_post_type() ) {
		/* translators: used between list items, there is a space after the comma */
		$tags_list = get_the_tag_list( '', __( '', 'sydney' ) );
		if ( $tags_list && is_single() ) {

printf( ‘<span class=”tags-links”>’ . __( ‘ %1$s’, ‘sydney’ ) . ‘</span>’, $tags_list );

		}
	}
	edit_post_link( __( 'Edit', 'sydney' ), '<span class="edit-link">', '</span>' );
}
endif;

一方、上記codexのリンクにある、基本的な例(パラグラフ内にコンマで区切られたタグのリストを出力します)は以下の通りで、このやり方で行うことにしました。

echo get_the_tag_list( '<p>タグ一覧:', ', ', '</p>' );

2.sydney_entry_footer関数を子テーマのfunctions.phpに追加

親テーマのSydneyでは、子テーマに同名の関数がないときに動作するようになっているので(上記コードの一行目)、子テーマのfunctions.phpにsydney_entry_footerを追加して、タグ名を表示する箇所を変更しました。
get_the_tag_listのパラメータは、順に、前に入れるテキスト、タグを区切る文字列、後に入れるテキスト なので、このブログの場合は、前にはtag-linksクラスを指定するspanタグ、区切り文字列はスペース、後に閉じタグを設定し、functions.phpを更新します。

変更前:

printf( '<span class="tags-links">' . __( ' %1$s', 'sydney' ) . '</span>', $tags_list );

変更後:

echo get_the_tag_list('<span class="tags-links">',' ','</span>');

 

タグ間の「0」がなくなりました。
テーマSydneyの投稿記事のタグ間に0を出ないようにした状態