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 を追加することもできます。
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とは、WordPress の投稿記事内に掲載したリンク先へ、自動でリンクしたことが通知される仕組みです。
個人的には、必要ない仕組みだと思いますので、削除してしまって良いと思います。