Created
October 1, 2012 00:54
-
-
Save ounziw/3808882 to your computer and use it in GitHub Desktop.
twentytwelve 1.0 日本語
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Translated by Fumito MIZUNO ( http://ounziw.com/ ) | |
* License for translation: CC-BY-SA | |
*/ | |
/** | |
* Twenty Twelve 関数と定義 | |
* | |
* テーマをセットアップし、ヘルパー関数を提供する。 | |
* ヘルパー関数はテーマでカスタムテンプレートタグとして使用する。 | |
* 他のものは WordPress のアクションフック、フィルターフックに付加され、コアの振る舞いを変更する。 | |
* | |
* 子テーマ( http://codex.wordpress.org/Theme_Development と | |
* http://codex.wordpress.org/Child_Themes を参照) を使用するとき、 | |
* (function_exists() でラップされている)いくつかの関数を、子テーマ functions.php で先に定義することで上書きできる。 | |
* 子テーマの functions.php ファイルは親テーマよりも先に include され、子テーマの関数が使用される。 | |
* | |
* pluggable でない (function_exists() でラップされていない)関数は、フィルターフック/アクションフックに付加される。 | |
* | |
* フック、アクション、フィルターについては http://codex.wordpress.org/Plugin_API を参照 | |
* | |
* @package WordPress | |
* @subpackage Twenty_Twelve | |
* @since Twenty Twelve 1.0 | |
*/ | |
/** | |
* テーマのデザインとスタイルシートに基づいたコンテンツ幅を設定する | |
*/ | |
if ( ! isset( $content_width ) ) | |
$content_width = 625; | |
/** | |
* テーマのデフォルトと、Twenty Twelve がサポートするさまざまな WordPress 機能を登録する | |
* | |
* @uses load_theme_textdomain() 翻訳/地域化のサポート | |
* @uses add_editor_style() ビジュアルエディタにスタイルシートを追加 | |
* @uses add_theme_support() アイキャッチ、自動フィードリンク、カスタム背景、投稿フォーマットを追加 | |
* @uses register_nav_menu() ナビゲーションメニューのサポートを追加 | |
* @uses set_post_thumbnail_size() アイキャッチ画像のサイズを追加 | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_setup() { | |
/* | |
* Twenty Twelve を翻訳可能にする | |
* | |
* /languages/ ディレクトリに翻訳が追加される | |
* Twenty Twelve に基づいたテーマを構築する場合、全てのテンプレートファイルの 'twentytwelve' を検索してあなたのテーマの名前に置換してください。 | |
*/ | |
load_theme_textdomain( 'twentytwelve', get_template_directory() . '/languages' ); | |
// ビジュアルエディタに editor-style.css を適用し、テーマのスタイルにマッチさせる | |
add_editor_style(); | |
// 投稿とコメントの RSS フィードリンクを <head> に追加する | |
add_theme_support( 'automatic-feed-links' ); | |
// 様々な投稿フォーマットをサポート | |
add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) ); | |
// wp_nav_menu() を一つ使用する | |
register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) ); | |
/* | |
* カスタム背景色/画像をサポートし、デフォルトの背景色を設定 | |
*/ | |
add_theme_support( 'custom-background', array( | |
'default-color' => 'e6e6e6', | |
) ); | |
// アイキャッチ画像の画像サイズを変更し、標準の投稿で表示する | |
add_theme_support( 'post-thumbnails' ); | |
set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop | |
} | |
add_action( 'after_setup_theme', 'twentytwelve_setup' ); | |
/** | |
* カスタム背景画像をサポート | |
*/ | |
require( get_template_directory() . '/inc/custom-header.php' ); | |
/** | |
* フロントエンドでスクリプトとスタイルを読み込み | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_scripts_styles() { | |
/* | |
* コメントフォームのある投稿で JavaScript を読み込み、スレッド表示をサポート | |
*/ | |
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) | |
wp_enqueue_script( 'comment-reply' ); | |
/* | |
* ナビゲーションメニューの表示非表示を処理する JavaScript を読み込む | |
*/ | |
wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true ); | |
/* | |
* 特別なフォント CSS ファイルを読み込む | |
* | |
* デフォルトの Open Sans は地域化されている。このフォントでサポートされていない文字を使用する言語では、フォントを無効化できる。 | |
* | |
* 子テーマで無効にするには、wp_dequeue_style() を使用する | |
* function mytheme_dequeue_fonts() { | |
* wp_dequeue_style( 'twentytwelve-fonts' ); | |
* } | |
* add_action( 'wp_enqueue_scripts', 'mytheme_dequeue_fonts', 11 ); | |
*/ | |
/* translators: If there are characters in your language that are not supported | |
by Open Sans, translate this to 'off'. Do not translate into your own language. */ | |
if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) { | |
$subsets = 'latin,latin-ext'; | |
/* translators: To add an additional Open Sans character subset specific to your language, translate | |
this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. */ | |
$subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'twentytwelve' ); | |
if ( 'cyrillic' == $subset ) | |
$subsets .= ',cyrillic,cyrillic-ext'; | |
elseif ( 'greek' == $subset ) | |
$subsets .= ',greek,greek-ext'; | |
elseif ( 'vietnamese' == $subset ) | |
$subsets .= ',vietnamese'; | |
$protocol = is_ssl() ? 'https' : 'http'; | |
$query_args = array( | |
'family' => 'Open+Sans:400italic,700italic,400,700', | |
'subset' => $subsets, | |
); | |
wp_enqueue_style( 'twentytwelve-fonts', add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" ), array(), null ); | |
} | |
/* | |
* 主要な stylesheet を読み込む | |
*/ | |
wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri() ); | |
} | |
add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' ); | |
/** | |
* 現在見ているページに基づいて、適切にフォーマットされ、より明快なタイトルを作成する | |
* | |
* @since Twenty Twelve 1.0 | |
* | |
* @param string $title 現在のページのデフォルトのタイトル | |
* @param string $sep (オプション)セパレータ | |
* @return string フィルタされたタイトル | |
*/ | |
function twentytwelve_wp_title( $title, $sep ) { | |
global $paged, $page; | |
if ( is_feed() ) | |
return $title; | |
// サイト名を追加する | |
$title .= get_bloginfo( 'name' ); | |
// フロントページでサイトの説明を追加する | |
$site_description = get_bloginfo( 'description', 'display' ); | |
if ( $site_description && ( is_home() || is_front_page() ) ) | |
$title = "$title $sep $site_description"; | |
// 必要に応じてページ番号を追加する | |
if ( $paged >= 2 || $page >= 2 ) | |
$title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) ); | |
return $title; | |
} | |
add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 ); | |
/** | |
* wp_nav_menu() のフォールバック wp_page_menu() でホームリンクを表示する | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_page_menu_args( $args ) { | |
$args['show_home'] = true; | |
return $args; | |
} | |
add_filter( 'wp_page_menu_args', 'twentytwelve_page_menu_args' ); | |
/** | |
* 主要なウィジェットエリア、フロントページウィジェットエリアを登録する | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_widgets_init() { | |
register_sidebar( array( | |
'name' => __( 'Main Sidebar', 'twentytwelve' ), | |
'id' => 'sidebar-1', | |
'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ), | |
'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' => __( 'First Front Page Widget Area', 'twentytwelve' ), | |
'id' => 'sidebar-2', | |
'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), | |
'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' => __( 'Second Front Page Widget Area', 'twentytwelve' ), | |
'id' => 'sidebar-3', | |
'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), | |
'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', 'twentytwelve_widgets_init' ); | |
if ( ! function_exists( 'twentytwelve_content_nav' ) ) : | |
/** | |
* 前/後ページが存在するとき、前/後ページへのナビゲーションを表示する | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_content_nav( $nav_id ) { | |
global $wp_query; | |
if ( $wp_query->max_num_pages > 1 ) : ?> | |
<nav id="<?php echo $nav_id; ?>" class="navigation" role="navigation"> | |
<h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3> | |
<div class="nav-previous alignleft"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ) ); ?></div> | |
<div class="nav-next alignright"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div> | |
</nav><!-- #<?php echo $nav_id; ?> .navigation --> | |
<?php endif; | |
} | |
endif; | |
if ( ! function_exists( 'twentytwelve_comment' ) ) : | |
/** | |
* コメントとピンバックのテンプレート | |
* | |
* コメントテンプレートを編集せずに子テーマで上書きするには、 | |
* (訳注:子テーマfunctions.phpで)独自の twentytwelve_comment() を作成すると、その関数を使用する | |
* | |
* wp_list_comments() のコールバックとして使用する | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_comment( $comment, $args, $depth ) { | |
$GLOBALS['comment'] = $comment; | |
switch ( $comment->comment_type ) : | |
case 'pingback' : | |
case 'trackback' : | |
// トラックバックは通常のコメントとは異なる表示 | |
?> | |
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>"> | |
<p><?php _e( 'Pingback:', 'twentytwelve' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?></p> | |
<?php | |
break; | |
default : | |
// 通常のコメント | |
global $post; | |
?> | |
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> | |
<article id="comment-<?php comment_ID(); ?>" class="comment"> | |
<header class="comment-meta comment-author vcard"> | |
<?php | |
echo get_avatar( $comment, 44 ); | |
printf( '<cite class="fn">%1$s %2$s</cite>', | |
get_comment_author_link(), | |
// 現在の投稿作成者がコメントした場合、区別する | |
( $comment->user_id === $post->post_author ) ? '<span> ' . __( 'Post author', 'twentytwelve' ) . '</span>' : '' | |
); | |
printf( '<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', 'twentytwelve' ), get_comment_date(), get_comment_time() ) | |
); | |
?> | |
</header><!-- .comment-meta --> | |
<?php if ( '0' == $comment->comment_approved ) : ?> | |
<p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentytwelve' ); ?></p> | |
<?php endif; ?> | |
<section class="comment-content comment"> | |
<?php comment_text(); ?> | |
<?php edit_comment_link( __( 'Edit', 'twentytwelve' ), '<p class="edit-link">', '</p>' ); ?> | |
</section><!-- .comment-content --> | |
<div class="reply"> | |
<?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply <span>↓</span>', 'twentytwelve' ), 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> | |
</div><!-- .reply --> | |
</article><!-- #comment-## --> | |
<?php | |
break; | |
endswitch; // end comment_type check | |
} | |
endif; | |
if ( ! function_exists( 'twentytwelve_entry_meta' ) ) : | |
/** | |
* 現在の投稿のメタ情報(カテゴリー、タグ、パーマリンク、作成者、日付)を HTML 出力する | |
* | |
* 子テーマで独自の twentytwelve_entry_meta() を作成して上書きする | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_entry_meta() { | |
// Translators: used between list items, there is a space after the comma. | |
$categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) ); | |
// Translators: used between list items, there is a space after the comma. | |
$tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) ); | |
$date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s" pubdate>%4$s</time></a>', | |
esc_url( get_permalink() ), | |
esc_attr( get_the_time() ), | |
esc_attr( get_the_date( 'c' ) ), | |
esc_html( get_the_date() ) | |
); | |
$author = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', | |
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), | |
esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ), | |
get_the_author() | |
); | |
// Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name. | |
if ( $tag_list ) { | |
$utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); | |
} elseif ( $categories_list ) { | |
$utility_text = __( 'This entry was posted in %1$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); | |
} else { | |
$utility_text = __( 'This entry was posted on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); | |
} | |
printf( | |
$utility_text, | |
$categories_list, | |
$tag_list, | |
$date, | |
$author | |
); | |
} | |
endif; | |
/** | |
* デフォルトの WordPress body class を拡張する | |
* 1. full-width:サイドバーにウィジェットが無いときまたは full-width 全幅テンプレート | |
* 2. template-front-page:フロントページテンプレート、has-post-thumbnail:アイキャッチがあるとき、two-sidebars:ウィジェット領域を2つ使用している | |
* 3. custom-background-empty:カスタム背景色無し、custom-background-whiteWhite:カスタム背景色が白色 | |
* 4. custom-font-enabled:カスタムフォントが有効 | |
* 5. single-author:単一の作成者 | |
* | |
* @since Twenty Twelve 1.0 | |
* | |
* @param array Existing class values. | |
* @return array Filtered class values. | |
*/ | |
function twentytwelve_body_class( $classes ) { | |
$background_color = get_background_color(); | |
if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) ) | |
$classes[] = 'full-width'; | |
if ( is_page_template( 'page-templates/front-page.php' ) ) { | |
$classes[] = 'template-front-page'; | |
if ( has_post_thumbnail() ) | |
$classes[] = 'has-post-thumbnail'; | |
if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) ) | |
$classes[] = 'two-sidebars'; | |
} | |
if ( empty( $background_color ) ) | |
$classes[] = 'custom-background-empty'; | |
elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) ) | |
$classes[] = 'custom-background-white'; | |
// Enable custom font class only if the font CSS is queued to load. | |
if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) ) | |
$classes[] = 'custom-font-enabled'; | |
if ( ! is_multi_author() ) | |
$classes[] = 'single-author'; | |
return $classes; | |
} | |
add_filter( 'body_class', 'twentytwelve_body_class' ); | |
/** | |
* full-width 全幅テンプレートのとき、アタッチメント画像のとき、サイドバーにウィジェットが無いときに、content_width の値を調整する | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_content_width() { | |
if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) { | |
global $content_width; | |
$content_width = 960; | |
} | |
} | |
add_action( 'template_redirect', 'twentytwelve_content_width' ); | |
/** | |
* テーマカスタマイザーでのサイトタイトルとキャッチフレーズの postMessage サポートを追加する | |
* (訳注:この機能は現在調査中) | |
* | |
* @since Twenty Twelve 1.0 | |
* | |
* @param WP_Customize_Manager $wp_customize Theme Customizer object. | |
* @return void | |
*/ | |
function twentytwelve_customize_register( $wp_customize ) { | |
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; | |
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; | |
} | |
add_action( 'customize_register', 'twentytwelve_customize_register' ); | |
/** | |
* JS ハンドラをバインドし、テーマカスタマイザーのプレビューを非同期的に更新する | |
* | |
* @since Twenty Twelve 1.0 | |
*/ | |
function twentytwelve_customize_preview_js() { | |
wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20120827', true ); | |
} | |
add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
元のコードは http://themes.svn.wordpress.org/twentytwelve/1.0/functions.php
GPL ライセンスです。