twentyeleven の functions.phpの続きです。
今回は、311行から最後までです。
/** * 投稿の抜粋の長さを 40 単語にする。 * * 小テーマで上書きするには、このフィルターを削除し、 * excerpt_length フィルターフックに独自フィルターを追加する。 */ function twentyeleven_excerpt_length( $length ) { return 40; } add_filter( 'excerpt_length', 'twentyeleven_excerpt_length' ); /** * 抜粋の場合に "Continue Reading" リンクを返す */ function twentyeleven_continue_reading_link() { return ' <a href="'. esc_url( get_permalink() ) . '">' . __( 'Continue reading <span class="meta-nav">→</span>', 'twentyeleven' ) . '</a>'; } /** * "[...]" (自動生成した抜粋に追加される) を三点リーダと twentyeleven_continue_reading_link() に置き換える。 * * 小テーマで上書きするには、このフィルターを削除し、 * excerpt_more フィルターフックに独自フィルターを追加する。 */ function twentyeleven_auto_excerpt_more( $more ) { return ' …' . twentyeleven_continue_reading_link(); } add_filter( 'excerpt_more', 'twentyeleven_auto_excerpt_more' ); /** * 投稿抜粋に、きれいな "Continue Reading" リンクを追加する。 * * 小テーマで上書きするには、このフィルターを削除し、 * get_the_excerpt フィルターフックに独自フィルターを追加する。 */ function twentyeleven_custom_excerpt_more( $output ) { if ( has_excerpt() && ! is_attachment() ) { $output .= twentyeleven_continue_reading_link(); } return $output; } add_filter( 'get_the_excerpt', 'twentyeleven_custom_excerpt_more' ); /** * wp_nav_menu() のフォールバック関数の wp_page_menu() でホームへのリンクを表示する。 */ function twentyeleven_page_menu_args( $args ) { $args['show_home'] = true; return $args; } add_filter( 'wp_page_menu_args', 'twentyeleven_page_menu_args' ); /** * サイドバーとウィジェット領域を登録する。デフォルトの短冊ウィジェットも登録する。 * * @since Twenty Eleven 1.0 */ function twentyeleven_widgets_init() { register_widget( 'Twenty_Eleven_Ephemera_Widget' ); register_sidebar( array( 'name' => __( 'Main Sidebar', 'twentyeleven' ), 'id' => 'sidebar-1', 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => "</aside>", 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Showcase Sidebar', 'twentyeleven' ), 'id' => 'sidebar-2', 'description' => __( 'The sidebar for the optional Showcase Template', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => "</aside>", 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Footer Area One', 'twentyeleven' ), 'id' => 'sidebar-3', 'description' => __( 'An optional widget area for your site footer', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => "</aside>", 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Footer Area Two', 'twentyeleven' ), 'id' => 'sidebar-4', 'description' => __( 'An optional widget area for your site footer', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => "</aside>", 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Footer Area Three', 'twentyeleven' ), 'id' => 'sidebar-5', 'description' => __( 'An optional widget area for your site footer', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => "</aside>", 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) ); } add_action( 'widgets_init', 'twentyeleven_widgets_init' ); /** * 複数ページがある時に、前後ページへのリンクを表示する。 */ function twentyeleven_content_nav( $nav_id ) { global $wp_query; if ( $wp_query->max_num_pages > 1 ) : ?> <nav id="<?php echo $nav_id; ?>"> <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3> <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentyeleven' ) ); ?></div> <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentyeleven' ) ); ?></div> </nav><!-- #nav-above --> <?php endif; } /** * 投稿コンテンツの最初のリンクの URL を返す。 * * @since Twenty Eleven 1.0 * @return string|bool URL あるいは false (リンクが無い場合) */ function twentyeleven_url_grabber() { if ( ! preg_match( '/<as[^>]*?href=['"](.+?)['"]/is', get_the_content(), $matches ) ) return false; return esc_url_raw( $matches[1] ); } /** * フッターのサイドバーの数を数えて、フッターのダイナミッククラスを可能にする */ function twentyeleven_footer_sidebar_class() { $count = 0; if ( is_active_sidebar( 'sidebar-3' ) ) $count++; if ( is_active_sidebar( 'sidebar-4' ) ) $count++; if ( is_active_sidebar( 'sidebar-5' ) ) $count++; $class = ''; switch ( $count ) { case '1': $class = 'one'; break; case '2': $class = 'two'; break; case '3': $class = 'three'; break; } if ( $class ) echo 'class="' . $class . '"'; } if ( ! function_exists( 'twentyeleven_comment' ) ) : /** * コメントとピンバックのテンプレート。 * * コメントテンプレートを変更しないで、小テーマで上書きするには、 * 単に独自の twentyeleven_comment() を作成すれば、そちらを使用する。 * * コメントを表示する wp_list_comments() のコールバックとして使用 * * @since Twenty Eleven 1.0 */ function twentyeleven_comment( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; switch ( $comment->comment_type ) : case 'pingback' : case 'trackback' : ?> <li class="post pingback"> <p><?php _e( 'Pingback:', 'twentyeleven' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?></p> <?php break; default : ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> <article id="comment-<?php comment_ID(); ?>" class="comment"> <footer class="comment-meta"> <div class="comment-author vcard"> <?php $avatar_size = 68; if ( '0' != $comment->comment_parent ) $avatar_size = 39; echo get_avatar( $comment, $avatar_size ); /* translators: 1: comment author, 2: date and time */ printf( __( '%1$s on %2$s <span class="says">said:</span>', 'twentyeleven' ), sprintf( '<span class="fn">%s</span>', get_comment_author_link() ), sprintf( '<a href="%1$s"><time pubdate datetime="%2$s">%3$s</time></a>', esc_url( get_comment_link( $comment->comment_ID ) ), get_comment_time( 'c' ), /* translators: 1: date, 2: time */ sprintf( __( '%1$s at %2$s', 'twentyeleven' ), get_comment_date(), get_comment_time() ) ) ); ?> <?php edit_comment_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?> </div><!-- .comment-author .vcard --> <?php if ( $comment->comment_approved == '0' ) : ?> <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentyeleven' ); ?></em> <br /> <?php endif; ?> </footer> <div class="comment-content"><?php comment_text(); ?></div> <div class="reply"> <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply <span>↓</span>', 'twentyeleven' ), 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> </div><!-- .reply --> </article><!-- #comment-## --> <?php break; endswitch; } endif; // ends check for twentyeleven_comment() if ( ! function_exists( 'twentyeleven_posted_on' ) ) : /** * メタ情報(現在の投稿の日時、著者) を含む HTML を出力する。 * 小テーマで上書きするには、独自の twentyeleven_posted_on を作成する。 * * @since Twenty Eleven 1.0 */ function twentyeleven_posted_on() { printf( __( '<span class="sep">Posted on </span><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s" pubdate>%4$s</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>', 'twentyeleven' ), esc_url( get_permalink() ), esc_attr( get_the_time() ), esc_attr( get_the_date( 'c' ) ), esc_html( get_the_date() ), esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), sprintf( esc_attr__( 'View all posts by %s', 'twentyeleven' ), get_the_author() ), esc_html( get_the_author() ) ); } endif; /** * body class に2つ追加する。 * 最初のもの (single-author) は、サイト内で、公開された投稿の著者が一人の場合。 * 二番目 (singular) は、単一記事が表示されている場合。 * * @since Twenty Eleven 1.0 */ function twentyeleven_body_classes( $classes ) { if ( ! is_multi_author() ) { $classes[] = 'single-author'; } if ( is_singular() && ! is_home() && ! is_page_template( 'showcase.php' ) && ! is_page_template( 'sidebar-page.php' ) ) $classes[] = 'singular'; return $classes; } add_filter( 'body_class', 'twentyeleven_body_classes' );
注意点は、抜粋でしょうか。40単語、のように単語数をカウントするとき、WordPress では空白文字を基準にしているようです。このため、日本語で記事を書いていると、単語数を適切にカウントできないことが多いです。
[…] debar の id 部分です。sidebar-1, sidebar-2, sidebar-3, sidebar-4, sidebar-5 だと分かります。(twentyeleven ソースコードリーディング参照。テーマ毎に異なるので、お使いのテーマで確認してください。) […]