body_classで出力されるclassに最上位のルートのページのスラッグを含むclass名が追加されるようになります。子ページ全部で同じcssを利用できるので、特定のツリーだけ配色を変更したいときなど便利にですよね。さらに、汎用化しているので固定ページだけじゃなくて、階層サポートしたのカスタム投稿タイプでも利用できます。
class名は、{投稿タイプスラッグ}-category-{ページのスラッグ}という命名規則にしてますが、このあたりはお好みで。
$post_type . '-category-' . $post->post_name
の部分を変えてくださいな。
function add_page_root_body_class( $classes ) { if ( is_singular() ) { $post_type = get_query_var( 'post_type' ); if ( is_page() ) { $post_type = 'page'; } if ( $post_type && is_post_type_hierarchical( $post_type ) ) { global $post; if ( $post->ancestors ) { $root = $post->ancestors[count($post->ancestors) - 1]; $root_post = get_post( $root ); $classes[] = esc_attr( $post_type . '-category-' . $root_post->post_name ); } else { $classes[] = esc_attr( $post_type . '-category-' . $post->post_name ); } } } return $classes; } add_filter( 'body_class', 'add_page_root_body_class' );