[_s] template-functions.php

template-functions.php

どのような関数をまとめておくためのファイルなのか、ファイルの名前からわかりにくいですが、テンプレートファイルのhtmlやcssに直接変更を加えるような関数をまとめるためのファイルだそうです。もとはextra.phpというどこにも当てはまらない関数まとめるファイルだったそうで、改名の経緯がgithubにあります。

<?php
/**
 * Functions which enhance the theme by hooking into WordPress
 *
 * @package _s
 */

/**
 * Adds custom classes to the array of body classes.
 *
 * @param array $classes Classes for the body element.
 * @return array
 */
function _s_body_classes( $classes ) {
	// Adds a class of hfeed to non-singular pages.
	if ( ! is_singular() ) {
		$classes[] = 'hfeed';
	}

	// Adds a class of no-sidebar when there is no sidebar present.
	if ( ! is_active_sidebar( 'sidebar-1' ) ) {
		$classes[] = 'no-sidebar';
	}

	return $classes;
}
add_filter( 'body_class', '_s_body_classes' );

/**
 * Add a pingback url auto-discovery header for single posts, pages, or attachments.
 */
function _s_pingback_header() {
	if ( is_singular() && pings_open() ) {
		printf( '<link rel="pingback" href="%s">', esc_url( get_bloginfo( 'pingback_url' ) ) );
	}
}
add_action( 'wp_head', '_s_pingback_header' );

function _s_body_classes( $classes )

add_filter( ‘body_class’, ‘_s_body_classes’ );で、 ‘body_class’アクションに’_s_body_classes’をフィルターフックすることで、 body_class()で独自のクラスを設定できるようにしています。

body_class()

body_class()は、HTML のbody要素(通常header.phpにある)に自動的に class属性を付与します。さらに引数を指定したり、filterを使うことで、任意の class を追加することもできます。

Code Reference body_class

hfeed

hfeedというクラスを追加しています。このクラスは装飾ためのcssとしてではなく、microformatの一つのhAtomという構造化データのマークアップのために使われます。

「構造化データ」がよく分かる!初心者向け徹底解説

構造化データ(microformats.org hAtom)をテンプレートに組み込んでマークアップしたお話。

ここのあたりの仕組みは不勉強であまり理解できていませんが、hfeedとその他のクラスにより、検索エンジンのBot等に、コンテンツの内容を伝えているのだと思います。

no-sidebar

no-sidebarというクラスは、layouts以下のディレクトリのcssファイルに記述されおり、名前の通り、サイドバーが無い場合のcssを指定するクラスです。_sのlayoutsディレクトリには、コンテンツ部分とサイドバー部分が左右に並ぶレイアウトのcssが用意されています。

function _s_pingback_header()

pingbackのためのurlをヘッダーに追加します。

pingback

pingbackについては、codexに説明があります。

また、以下のサイトが公式ドキュメントで、日本語に翻訳されいて、わかりやすいです。

Pingback 1.0

端的に言えば、pingbackとは、WordPress の投稿記事内に掲載したリンク先へ、自動でリンクしたことが通知される仕組みです。

個人的には、必要ない仕組みだと思いますので、削除してしまって良いと思います。