36
第18回 WordBench神戸 - パーフェクト functions.php - 作成日: 2012/12/1 作成者: @bren_boss, @HissyNC

Word press 3.5RC2 - パーフェクト functions.php -

  • Upload
    bren

  • View
    11.771

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Word press 3.5RC2   - パーフェクト functions.php -

第18回 WordBench神戸

- パーフェクト functions.php -

作成日: 2012/12/1

作成者: @bren_boss, @HissyNC

Page 2: Word press 3.5RC2   - パーフェクト functions.php -

このドキュメントについて

テーマの拡張機能を組み込むさいに必須の functions.php の内

容を解説するとともに、もうすぐリリースされる WordPress 3.5

のリリース候補版を紹介します。

Page 3: Word press 3.5RC2   - パーフェクト functions.php -

子テーマから上書きできるものの見分け

if ( ! isset( $hogehoge ) )

if ( ! function_exists( 'hogehoge' ) )

Page 4: Word press 3.5RC2   - パーフェクト functions.php -

$content_width大サイズで画像を挿入する際に、img タグの width 属性値

が、$content_width を最大値として縮小されます。

テーマ作成の際は必須項目なので、必ずメインカラムの幅を指

定するようにしよう。

子テーマから書き換えられるようになっています。

Page 5: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_setup()

● load_theme_textdomain()

テーマ用翻訳ファイルを読み込むよう設定する(英語/日本

語両対応など)。

● add_editor_style()

記事編集時に使うエディタ用CSS(editor-style.css)を使用

するよう設定する。

● add_theme_support( 'automatic-feed-links' )

通常の記事のフィードに追加し、ページ全体と記事コメント

のフィードを書き出すよう設定する。

Page 6: Word press 3.5RC2   - パーフェクト functions.php -

● add_theme_support( 'post-formats' )

投稿フォーマット(記事の表示方法)を使えるよう設定する。

● register_nav_menu( 'primary' )

カスタムメニュー内のグローバルメニューを設定可能にす

る。

● add_theme_support( 'custom-background' )

テーマの背景色を設定。

Page 7: Word press 3.5RC2   - パーフェクト functions.php -

● add_theme_support( 'post-thumbnails' )

投稿サムネイルを設定可能にする

● set_post_thumbnail_size()

投稿サムネイルの大きさを設定

Page 8: Word press 3.5RC2   - パーフェクト functions.php -

custom-header.php

● require( get_template_directory() . '/inc/custom-header.

php' )

カスタムヘッダー(ヘッダーの表示をカスタムできる機能)の

ソースコードを読み込んで挿入する。

テーマカスタマイザー(※後述)にも影響する。

Page 9: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_scripts_styles()

<head></head> 内で読み込む Javascript/CSS について、

ファイルの追加/削除/読み込む優先順位の設定を行う。

● wp_enqueue_script()

指定したJavascriptファイルを読み込むよう設定

● wp_enqueue_style()

指定したCSSファイルを読み込むよう設定

Page 10: Word press 3.5RC2   - パーフェクト functions.php -

次の場合に有効なため、<head></head> 内に直接書くより、こ

ちらの処理が推奨されている。

● jQuery など前後の依存関係が強いものを明確にする

● プラグインなど外部から操作できる

Page 11: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_wp_title()

<title></title> 内を出力する処理。

以前は header.php に記述していたものがフィルター処理に置き

換わり、テーマ外からも操作可能になった。

一見めんどくさくなった印象があるが、WordPressとしては可能

な限りアクション/フィルターで処理してもらいたいらしく、その

象徴のようなもの。

Page 12: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_page_menu_args()メニューの先頭に"ホーム"を追加する。それだけ。

Codex: テンプレートタグ/wp page menu

Page 14: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_content_nav()次へ/前へのナビゲーションを出力する独自テンプレートタグ

の定義。

子テーマから書き換えられるようになっています。

Page 15: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_comment()コメント欄の表示のカスタマイズ。

子テーマから書き換えられるようになっています。

Page 16: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_entry_meta()投稿のメタ情報(公開日、作成者、タグ、カテゴリー)を表示する

テーマ独自テンプレートタグの定義。

microformats 対応

子テーマから書き換えられるようになっています。

Page 17: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_body_class()サイドバーが無いとき、背景色のカスタマイズがされていると

き、Google Font が読み込まれているとき、などの条件で

body_class に独自クラスを追加しています。実際の案件でも使

えるとかなり便利なテク。

body_class … 表示しているページによって<body>タグのclass

属性に自動的にクラスが入る。

Codex: テンプレートタグ/body_class

Page 18: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_content_width()

固定ページの表示で full-width.php ページテンプレートを使って

いるか、attachment ページを表示しているか、またはサイド

バーが無いときに、 $content_width を 960 に変更しています。 

これは結構使えるかも!

Page 19: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_customize_register()

テーマカスタマイザーの設定(よくわかりませんが3.4から変わっ

てます)

Codex(英語) : Class Reference/WP Customize Manager/get

setting

Page 20: Word press 3.5RC2   - パーフェクト functions.php -

function twentytwelve_customize_preview_js()

テーマカスタマイザーのプレビュー表示で、非同期(リアルタイ

ム)に変更内容を反映させるJavasciptを読み込んでいます

でも、3.4でも非同期で変わってた…なぜ必要になったの

か???

Page 21: Word press 3.5RC2   - パーフェクト functions.php -

wp_titleの子テーマからの書き換え例

function my_wp_title( $title, $sep ) {global $paged, $page;// 好きな処理

return $title;}

function adjust_twentytwelvechild_wp_title() {add_filter( 'wp_title', 'my_wp_title', 10, 2 );remove_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 );

}

add_action('after_setup_theme','adjust_twentytwelvechild_wp_title');

Page 22: Word press 3.5RC2   - パーフェクト functions.php -

Twenty Twelveと

Twenty Elevenでは

ココが違う!

- 菱川さんヨロシク -

Page 23: Word press 3.5RC2   - パーフェクト functions.php -

incフォルダの中身がすっきり

2011 は独自ウィジェットやテーマオプション画面のために inc

フォルダで色々読み込んでいました。

2012 では custom-header.php だけ。

Page 24: Word press 3.5RC2   - パーフェクト functions.php -

Google Fonts APIを使ってる!

// httpsかhttpか判断してる

$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 );

Page 25: Word press 3.5RC2   - パーフェクト functions.php -

ページテンプレートがフォルダにまとまっ

ている

page-templatesフォルダにまとめて格納。これは便利。

Page 26: Word press 3.5RC2   - パーフェクト functions.php -

WordPressお悩み相談室

なんでも聞いてね!でも、わからないこともあるよ!

Page 27: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

WordPress3.5, Twenty Twelve, 今日の内容、その他の疑問を解消して年越ししましょう

質問はハッシュタグ #wbkobe からもどうぞ

Page 28: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. $content_width の数値を変えると画像の最大値が変わる。管理画面のメディアの設定とどっちが優先される?

A. 実際の画像サイズは管理画面のメディアの設定でリサイズされている。投稿画面で挿入する際にimgタグの属性で$content_widthの数値が使われる。

Page 29: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. ユーザーごとに投稿できるカテゴリーや投稿タイプを制限したい

A. Adminize, Category Limitation(更新されてなさげ), User Role EditorTypesでできます!×3 有料だったorz

Roleを増やして…なんかプラグインありそうですね

Page 30: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. editor_style.css を、カテゴリーごと?に分けたい

A. 投稿タイプなら可能みたいです。TinyMCEのiframe内のbody要素のclass属性にクラス名が書いてあるので。↓

<body id="tinymce" class="mceContentBody content post-type-post wp-editor"></body>

Page 31: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. IE対応

A. headのクラスをIEコンディショナルコメントで仕込んでおくのは流行ってますねTwenty Elevenでは使ってない

<!DOCTYPE html><!--[if IE 7]><html class="ie ie7" <?php language_attributes(); ?>><![endif]--><!--[if IE 8]><html class="ie ie8" <?php language_attributes(); ?>><![endif]--><!--[if !(IE 7) | !(IE 8) ]><!--><html <?php language_attributes(); ?>><!--<![endif]-->

Page 32: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. Twenty Eleven のカスタマイズでテーマを作ってた人が Twenty Twelve に移行するには?

A. 完全に別モノなので難しいかも。作りなおすほうがいい

テーマ開発者も違う人らしいですよ(naoさん情報)

Page 33: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. functions.phpをカスタマイズは、ソースを末尾にコピペでいいのか?

A. 動きますが、子テーマの場合は実行順に注意。子テーマのfunctions.phpが先、親テーマのfunctions.phpがあと。自作テーマならコピペ祭りでいけますよ〜

子テーマとは…既存のテーマを親として、一部だけカスタマイズできるしくみ。

Page 34: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. functions.phpを書き換えるとWarningとか出るんですが…

A. Warningはエラーの内容が分かれば修正できる。コードを送ってください(by bren)

フォーラムもあるよ

Page 35: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. 多言語化プラグインのベストプラクティス

A. qTranslate, WPML(有償), Bogo(開発中ぽい)

Page 36: Word press 3.5RC2   - パーフェクト functions.php -

質問タイム!

Q. 投稿画面が明朝になるのをゴシックに変えたい

A. editor-style.cssで変更できますよ。