WordPress non aggiunge un ID alle sue sezioni ma solo classi. La soluzione in questo caso è semplice.
Possiamo definire la seguente funzione di utility:
if( !function_exists( 'my_body_id' ) ) {
function my_body_id() {
global $post;
global $wp_query;
$post_id = $post->ID;
$id = '';
if( is_home() || is_front_page() ) {
$id = 'home';
}
if( is_single() ) {
$id = 'post-' . $post_id;
}
if( is_page() ) {
$id = 'page-' . $post_id;
}
if( is_paged() ) {
$current_page = $wp_query->query_vars['paged'];
if( $current_page > 0 ) {
$id = 'paged-' . $current_page;
}
}
if( is_category() || is_archive() ) {
$cat_name = get_query_var( 'category_name' );
if( !empty( $cat_name ) ) {
$id = 'category-' . $cat_name;
} else {
$id = 'archive';
}
}
if( is_tag() ) {
$id = 'tag-' . get_query_var( 'tag' );
}
if( is_404() ) {
$id = 'error404';
}
echo ' id="'. $id .'" ';
}
}
Esempio d'uso:
<body<?php my_body_id();?>></body>