Successfully reported this slideshow.
Your SlideShare is downloading. ×

Theme review-guidelines wckobe2013

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 96 Ad
Advertisement

More Related Content

Slideshows for you (14)

Similar to Theme review-guidelines wckobe2013 (20)

Advertisement

Theme review-guidelines wckobe2013

  1. 1. テーマレビューガイドライン WordCamp Kobe 2013 2013.06.15 ヒラタ/@01v0101
  2. 2. 自己紹介 ヒラタ/@01v0101 とある組織のウェブ担当者 ※別に隠し立て必要のある仕事という事ではありません。。
  3. 3. 【公式テーマ】とは ダッシュボードからインス トールできるテーマ /wp-admin/theme-install.php =公式テーマディレクトリ に登録されているテーマ http://wordpress.org/themes/
  4. 4. 【公式テーマ】とは 何をもって「公式」? →審査で承認されたテーマ http://themes.trac.wordpress.org/ 審査基準 →テーマレビューガイドライン http://codex.wordpress.org/Theme_Review
  5. 5. 【テーマレビューガイドライン】とは •  公式テーマディレクトリへ登録されるための審査基準 •  様々な技術を WordPress に実装するための設計指標
  6. 6. 本題の前に •  本スライドは以下 URL にて公開しております。 <http://www.slideshare.net/hiratatsuya/theme- reviewguidelines-wckobe2013> •  スライドの内容は基本的にテーマレビューガイドライン <http://codex.wordpress.org/Theme_Review> の翻 訳です。※文章量多いです。。
  7. 7. テーマレビューガイドライン(2013-6-12) 1.  コード品質 2.  視認性と機能性 3.  テーマ機能 4.  テンプレートタグおよび フック 5.  WP 定義 CSS クラス 6.  テンプレートファイル 7.  セキュリティとプライバ シー 8.  ライセンス(使用許諾) 9.  テーマ名 10. クレジットリンク 11. テーマ説明書 12. テーマユニットテスト 13. テーマの旧式化 14. アクセシビリティ 15. 正しく綴る WordPress
  8. 8. 1. コード品質 テーマは、WordPress 非推奨(廃止予定の)関数が使われ ていない事、PHP エラー・警告または通知がでない事、 HTML / CSS の検証エラー、JavaScript エラーがない事 が必須です。 1. WordPress 2. PHP, JS, CSS, HTML 3. Doctype 宣言 4. テーマの名前空間
  9. 9. 1.1. WordPress コード旧式化 テーマは非推奨(廃止予定の)関数を使用したり _doing_it_wrong() 通知を出力してはいけません。
  10. 10. 1.1. WordPress 下位互換性 テーマは、function_exists 関数を使用して現行の WordPress 関数に対応する事を含め、過去バージョンの WordPresへの下 位互換性を提供してはいけません。 •  テーマは、2バージョンより前のメジャーバージョン(現在は WordPress 3.2を意味する)のための下位互換性をサポートし てはいけません。 •  テーマは、1バージョンより前のメジャーバージョン(現在は WordPress 3.3を意味する)のための下位互換性をサポートす るべきではありません。
  11. 11. 1.2. PHP, JS, CSS, HTML •  テーマは、通知・警告・エラーが発生しない事が必須で す。以下の方法を使用してテストします。 –  デバッグモードへ移行 wp-config.php: define(WP_DEBUG, true); –  プラグインを使用 •  Log Deprecated Notices(非推奨タグチェック) •  Debogger(デバッグ情報表示)
  12. 12. 1.2. PHP, JS, CSS, HTML •  テーマは、あらゆる JavaScript エラーを生成してはい けません。 •  テーマは現行バージョンの(X)HTMLとCSSを使用し、 次のいずれかの方法を使用してテストすることを推奨し ます。 –  W3C XHTML Validator + W3C CSS Validator –  W3C XHTML+CSS Validator (Unicorn)
  13. 13. 1.3. Doctype 宣言 •  テーマは、有効な HTML ドキュメント HEAD 定義が必 須です。 –  有効な DOCTYPE 宣言である事。 –  <html>タグに language_attributes() 関数が含まれ てる事。 –  <head> 内に正しいXFNプロファイルリンク:<head profile= http://gmpg.org/xfn/11 > が設定されて いる事。例外:として、HTML5はサポート外なので、 プロファイルがあってはいけません。
  14. 14. 1.3. Doctype 宣言 –  正しい content-type meta が宣言されている事。 <meta http-equiv= Content-Type content= <? php bloginfo( html_type ); ?>; charset=<?php bloginfo( charset ); ?> /> あるいは <title> タグ前 で <meta charset= <?php bloginfo( charset ); ? > /> –  <title>内に、タイトルと概要を明示するために bloginfo() 関数を設定している事。
  15. 15. 1.4. テーマの名前空間 •  テーマは、翻訳用にテキストドメインとしてテーマスラッグ (or a reasonable facsimile)を使用する事が必須です。 •  テーマは、すべてのカスタム関数、クラス、フック、グロー バル/パブリック変数、データベースエントリ(テーマオプ ション、ポストカスタムメタデータなど)など、全ての名称の 接頭辞として、ユニークなスラッグを使用する事が必須です。 –  テーマは、テーマ固有のユニークなスラッグを使用する事 が推奨されています。 c.f. Twenty Twelve…functions.php: load_theme_textdomain( 'twentytwelve', get_template_directory() . '/languages' );
  16. 16. 1.4. テーマの名前空間 •  注:翻訳のためにテーマスラッグを使用する場合、ス ラッグは文字列でなければならず、変数や定数であって なりません。 変数や定数を使用すると、テキスト自動翻 訳ツールの問題を引き起こします。 詳細については、 Mark Jaquithの投稿を参照してください。このガイド ラインは、すべてのi18n変換メカニズムを使用するため に対応する事が必須です。
  17. 17. 2. 視認性と機能性 本来、テーマの目的はユーザコンテンツを表示する事であ り、テーマがユーザコンテンツの生成を定義したり、ある いはテーマ固有のサイトオプションや機能性を定義するた めに、テーマを使用してはいけません。
  18. 18. 2. 視認性と機能性 言語 •  テーマは、公開される全ての場面において英語表記を持って いる事が必須です。 •  テーマは、 必要に応じて 翻訳・国際化機能を組み込む事が できますが、組み込まれている場合、 翻訳・国際化機能は、 WordPress のコア機能をサポートしている必要があります。 –  テーマは、翻訳機能を持たせるため、変数ではなく定数で はなく連結子でもなく、文字列である構成される事が必須 です。
  19. 19. 2. 視認性と機能性 ファビコン •  テーマは、ファビコン機能を実装しない事を推奨してい ます。 –  実装した場合、ファビコン機能は選択式であり、デ フォルトでは無効になっている事が必須です。 –  実装されている場合、ファビコン機能はユーザ定義の ファビコン画像をサポートする事が必須です。
  20. 20. 3. テーマ機能 必須、推奨、任意のいずれにせよ、テーマは WordPress のコアに実装されている全ての機能を適切にサポートする 事が必須です。
  21. 21. 3. テーマ機能(必須) テーマは以下のコア機能を実装する事が必須です。 •  自動フィードリンク: add_theme_support( 'automatic-feed-links' ) •  ウィジェット: register_sidebar(), dynamic_sidebar(), add_action(widgets_init), register_widget() •  コメント: comments_template(), wp_list_comments(), comment_class(), comment_form(), wp_enqueue_script( 'comment-reply' )
  22. 22. 3. テーマ機能(推奨) テーマは以下の WordPress コア機能を組み込む事を推奨 していますが、必須ではありません。しかし組み込んでい る場合、 WordPress コアの機能での実装をサポートして いる必要があります。
  23. 23. 3. テーマ機能(推奨) カスタムメニュー: •  wp_nav_menu() •  functions.php 内にregister_nav_menu() また は register_nav_menus() •  以下の機能は、単にナビゲーションメニューのために wp_nav_menu() のコールバックとして使用しても、 has_nav_menu() の一部条件として使用しても良いです。 あるいは wp_list_pages wp_list_categories wp_page_menu などの類似機能もあります。
  24. 24. 3. テーマ機能(推奨) 投稿サムネイル •  the_post_thumbnail() •  add_theme_support( post-thumbnails ) カスタムヘッダ •  add_theme_support( custom-header ) カスタム背景 •  add_theme_support( custom-background ) ビジュアルエディタ CSS •  add_editor_style() •  editor-style.css ファイル
  25. 25. 3. 機能(不可) テーマは以下の WordPress コア機能を組み込んではいけ ません。 •  機能通知ポインター
  26. 26. 4. テンプレートタグおよびフック テーマで使用されるすべてのテンプレートタグやフックは 適切に実装される事が必須です。 1.  必須フックとナビゲーション 2.  ファイルの読み込み 3.  子テーマのサポート 4.  スタイルシートとスクリプトの読み込み 5.  関数パラメータ、フィルタ、およびアクションフック 6.  サイト情報
  27. 27. 4.1. 必須フックとナビゲーション •  wp_title() •  wp_head() ‒ (</head> の直前) •  body_class() ‒ (<body> の中) •  $content_width •  post_class() •  wp_link_pages() •  paginate_comments_links(), または previous_comments_link()/next_comments_link() •  posts_nav_link(), または previous_posts_link()/next_posts_link(), または paginate_links() •  wp_footer() ‒ (</body> の直前)
  28. 28. 4.2. ファイルの読み込み 以下のファイルテーマに組み込む場合、標準テンプレート ファイルを正しいテンプレートタグを用いて呼び出すこと が必須です。 •  comments.php (comments_template()経由) •  header.php (get_header()経由) •  footer.php (get_footer()経由) •  sidebar.php (get_sidebar()経由) •  searchform.php(get_search_form()経由)
  29. 29. 4.2. ファイルの読み込み カスタムテンプレートファイルがテーマに組み込まれてい る場合、 get_template_part() または locate_template() を使用して呼び出される事が必須です。 •  詳細については「ワードプレスのテーマ内のファイルを ロードする方法」を参照してください。 •  include(get_template_directory(). / file.php )は、 テーマテンプレートパーツファイルとして呼び出しては いけません。
  30. 30. 4.2. ファイルの読み込み テーマは、テーマの中に含まれる全てのテンプレートファ イルを読み込む事が必須です。 テーマは、以下の機能のい ずれかを使用する場合には、適切なテンプレートファイル を含む事が必須です。 get_footer(): footer.php get_header(): header.php get_sidebar(): sidebar.php comments_template(): comments.php
  31. 31. 4.3. 子テーマのサポート •  テーマは、子テーマの利用を促進する事が必須です。 基 本的な 子テーマ(すなわち、 style.css 内のテンプレー トヘッダー内に記述され、参照される style.css ) から 有効化された時に、テーマ自体が関数として正確に機能 する事が必須です。
  32. 32. 4.3. 子テーマのサポート •  テーマは子テーマで使用するのに容易な方法で、機能と リソースファイルを読み込み事が必須です。 –  get_template_directory_url() は親テーマファイル、 またはリソースを読み込むために使用します。そして それは子テーマに上書きされる事はありません。 –  get_stylesheet_directory_url () は、子テーマでの リソースを読み込むために使用します。これは子テー マに依存します。
  33. 33. 4.4. スタイルシートとスクリプトの読込み •  テーマがスタイルシートとスクリプトの読み込む時は、常に wp_enqueue_style()またはwp_enqueue_script() を使用し、かつ ハードコーディングしたスタイルシート/スクリプトをテンプレートタ グに書き込むのではなく、適切なフックからコールバックされる事が必 須です。 •  テーマはadmin-enqueued scripts/stylesheetsには、Theme- specific フックを使う事が必須です。 •  テーマは、スタイルシートとスクリプトを wp_enqueue_scripts で フックする事を推奨します。 •  テーマは、任意に文書の冒頭で直接、あるいは wp_enqueue_style() を介してデフォルトのスタイルシート(style.css ) をリンクする可能性 があります。 どちらの方法が使用されても、デフォルトスタイルシー トが get_stylesheet_url() を介して参照される事に違いはありません。
  34. 34. 4.4. スタイルシートとスクリプトの読込み •  テーマは以下のようなスクリプトではなく、コアに実装 されているスクリプトを使用する事が必須です。 –  テーマは TimThumb ライブラリを使用してはいけま せん。
  35. 35. 4.5. 関数パラメータ、フィルタ、およびア クションフック テーマは、内容を変更したりハードコーディングするよりも、 適切な関数のパラメータ、フィルタ、フックを使用する事が必須 です。 •  wp_title() wp_title()フィルタを介して出力する事が必須です。 c.f. Twenty Twelve…add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 ); •  body_class()/post_class() body_class()とpost_class()はフィルタを介して出力する事 が推奨されています。 c.f. Twenty Twelve…add_filter( 'body_class', 'twentytwelve_body_class' ) •  テーマは、必要に応じて関数パラメータを介して出力を変更 することができます。
  36. 36. 4.6. サイト情報 サイト情報をテーマに組み込む場合、正しいテンプレート タグを用いて呼び出す事が必須です。 •  テンプレート/スタイルシートのパス: –  テーマがテンプレートのパスを返す必要のある時、定 数 TEMPLATEPATH ではなく、 get_template_directory()を使用する事が必須です。 –  テーマがスタイルシートのパスを返す必要のある時、 定数 STYLESHEETPATH ではなく、 get_stylesheet_directory()を使用する事が必須です。
  37. 37. 4.6. サイト情報 テーマは、bloginfo() よりも、それに相当する *_url() テ ンプレートタグを使用する事が必須です。get_option()タ グに相当する内容に関してはtrac#9008のチケットを参照 ください。
  38. 38. 4.6. サイト情報(使用例) •  文字コード: bloginfo( 'charset' ) •  ホーム URL: echo home_url() •  HTML タイプ: bloginfo( 'html_type' ) •  フィードリンク: get_feed_link( 'feed' ) (where feed is rss, rss2, atom) •  サイト言語: bloginfo( 'language' ) •  地域情報: get_locale() •  親テーマディレクトリURL: get_template_directory_uri() •  親テーマディレクトリパス: get_template_directory() •  親テーマ名: get_template() •  サイト概要: bloginfo( 'description' ) •  サイトタイトル: bloginfo( 'name' ) •  スタイルシートディレクトリURL: get_stylesheet_directory_uri() •  スタイルシートリURL: get_stylesheet_uri() •  スタイルシートディレクトリパス: get_stylesheet_directory() •  文字方向: bloginfo( 'text_direction' ) –  is_rtl() でステータス取得する事が 推奨されています。 •  WordPress URL:echo site_url() •  WordPress バージョン情報: bloginfo( 'version' )
  39. 39. 5. WordPress 定義 CSS クラス テーマは、 WordPress で定義されるCSSクラスをサポートす る事が必須です。 スタイルシートに記述されている事が必須である一方、必要に 応じて .stickyと .bypostauthorはスタイルなし、空のままにす る事ができます。この意図は、テーマ開発者がWordPress定義 CSS クラスを検討した事を確認するためです。 ・整列要素:   .aligncenter   .alignleft   .alignright ・キャプション要素:   .wp-caption   .wp-caption-text   .gallery-caption ・投稿要素:   .sticky ・コメント要素:   .bypostauthor
  40. 40. 6. テーマテンプレートファイル(必須) テーマは、テーマテンプレートファイルを適切に使用する 事が必須です。注:子テーマのファイル数は親テーマに依 存するため、必ずしもこの限りではありません。
  41. 41. 6. テーマテンプレートファイル(必須) テーマは最低でも以下ファイルを含める事が必須です。 •  index.php •  comments.php (comments_template()経由) •  screenshot.png –  推奨…アスペクト比4:3、600x450px(※Retinaディスプ レイ対応のため、以前の300x225pxの2倍) –  最大サイズ:600x450px –  初めてテーマが適用された時に表示される であろうスクリーンショットである必要があります。 •  style.css
  42. 42. 6. テーマテンプレートファイル(推奨) テーマは以下ファイルを含む事を推奨します。注:header.php や footer.php や sidebar.php には、sidebar-left.php や sidebar- right.php や sidebar-footer.php などの変形も含みます。 •  404.php •  archive.php •  page.php •  search.php •  single.php •  header.php (get_header()経由) •  footer.php (get_footer()経由) •  sidebar.php (get_sidebar()経由)
  43. 43. 6. テーマテンプレートファイル(任意) テーマが以下のファイルを含める事は任意です。 •  attachment.php •  author.php •  category.php •  date.php •  editor-style.css •  image.php •  tag.php
  44. 44. 6. テーマテンプレートファイル(機能実装) テーマは、次のようなテンプレートタグやコアのマーク アップを使用し、各種フォームを実装する事を推奨します。 •  ログイン:wp_login_form()を使用する事が必須です。 •  検索:get_search_form()を使用する事が必須です。 テーマは、任意の searchform.php を使用する事で、検 索フォームをカスタマイズすることができます。
  45. 45. 6. テーマテンプレートファイル(名前) テーマは、次のような名前のファイルを含めない事が推奨 されています。このようなファイルが使用されている場合 は、テーマは、それらを使用する方法を説明するドキュメ ントをエンドユーザーに提供する事が必須です。 •  page-foobar.php •  category-foobar.php •  tag-foobar.php •  taxonomy-foobar.php
  46. 46. 6. テーマテンプレートファイル(名前) 注: 一般公開するテーマでこれら命名法を避ける理由は、 利用者が「foobar」というスラッグのページやカテゴリー を作成すると、デフォルトテンプレートではなく、予期せ ずこのテンプレートが適用されてしまうためです。テンプ レート階層 - ページ表示を参照してください。
  47. 47. 7. セキュリティとプライバシー テーマは、データのセキュリティとエンドユーザーのプラ イバシーを確保するために、適切にテーマ設定を実装する 事が必須です。 1.  テーマ設定とデータセキュリティ 1.  参考記事 2.  プライバシー
  48. 48. 7.1. テーマ設定とデータセキュリティ •  テーマは、すべてのオプション、カスタム関数、カスタ ム変数、およびカスタム定数の接頭辞に、テーマスラッ グ(または適切な変数)を付ける事が必須です。 •  テーマは、テーマオプションとテーマ設定を、インター ネット上に公開されているスクリプトをコピー&ペース トで拾ってくるのではなく、慎重に実装する事が必須で す。
  49. 49. 7.1. テーマ設定とデータセキュリティ •  テーマは、テーマ設定ページ追加するために、トップレ ベルメニューに追加するための add_menu_page() を 使用するのではなく、外観メニューに追加するための add_theme_page() 関数を使用する事が必須です。
  50. 50. 7.1. テーマ設定とデータセキュリティ •  テーマは、テーマ設定を行うため、ユーザー種別(例えば 管理者)、あるいは設定ページを追加する機能ごとに異 なる権限(例えば edit_themes , manage_options )に 依存するのではなく、 add_theme_page() に edit_theme_options 権限を使う事が必須です。
  51. 51. 7.1. テーマ設定とデータセキュリティ •  テーマは、単一の配列にオプションを保存するのではな く、その設定のページに対する複数のオプションを作成 する事が必須です。 Settings API を使用するのと同じ ように、テーマ固有のプロパティ値を扱う set_theme_mod()とget_theme_mod() はこれを実現 します。
  52. 52. 7.1. テーマ設定とデータセキュリティ •  チェックボックスやセレクトオプションの実装においては、 それぞれが 選択されている という事を明示するため、 checked()タグと selected() タグを使用する事が必須です。 •  テーマは、データをデータベースへ入力する前に、信用でき ないデータすべてをクリーンかつ有効にし、そして全ての信 用できないデータを設定画面あるいはテーマテンプレート ファイルに表示させない事が必須です。 •  テーマは、テキスト入力に際して esc_attr() や esc_html() あるいはesc_textarea() を使用する事が必須です。
  53. 53. 7.1. テーマ設定とデータセキュリティ •  テーマは、設定ページに明示的なワンタイムトークンを 供給する事が必須です。でないならばSettings-APIを使 用する事が必須です (参照:WordPress Nonces) •  テーマは、フォームに入力したデータを $_POSTや $_REQUESTを用いて直接取り扱うのではなく、 Settings API 使用する事を推奨しています。 •  テーマは、設定を出力するのにハードコーディングを行 うよりも do_settings_sections() を使用する事を推奨 しています。
  54. 54. 7.1.1 参考記事 •  Incorporating the Settings API in WordPress Themes by Chip Bennett •  WordPress Settings API Tutorial by Otto •  A Sample WordPress Theme Options Page by Ian Stewart
  55. 55. 7.2. プライバシー テーマは、ユーザの同意なしに情報収集の通信を行なってはい けません。 •  テーマがユーザーデータを収集する時は、例えばユーザの設 定可能なテーマオプションなどを通じて、常にそれが明示さ れる事が必須です。 •  テーマは、テーマ内のすべての画像、スクリプト、およびそ の他のバンドルリソースを含める必要があります。 これらリ ソースは、サードパーティのサイトから ホットリンク しては いけません。 注:API呼び出し、例えばGoogleのライブラリ は許容されます。
  56. 56. 8. ライセンス(使用許諾) テーマは、完全に GPL 互換の下でライセンスされる事が 必須です。 1.  有償テーマ 2.  同梱リソース 1.  GPL 互換フォントライセンス 2.  GPL 互換アイコンセット
  57. 57. 8. ライセンス(使用許諾) ライセンス •  テーマは100% GPL ライセンスまたはGPL 互換ライセンス であることが必須です。これにはすべての PHP、HTML、 CSS、画像、フォント、アイコン、その他が含まれます。 テーマのすべての部品が GPL 互換ライセンスでなければなり ません。 •  テーマは、 ライセンス全文を記した、あるいは参照した license.txt をテーマファイルに同梱するか、あるいはライセ ンス全文を記した有効なURLへのリンクを記述する事が選択 できます。
  58. 58. 8. ライセンス(使用許諾) ライセンス •  テーマにはこれらのライセンスを明示的に記載すること が必須です。以下のいずれかの方法を使ってください。 •  License または License URI ヘッダースラッグを style.css に追加します。 c.f. Twenty Twelve…style.css: License: GNU General Public License v2.0 License URI: http://www.gnu.org/licenses/gpl-2.0.html
  59. 59. 8. ライセンス(使用許諾) 著作権 •  テーマは、該当する著作権とライセンス情報を宣言する 事が必須です。 (例:Twenty Eleven WordPress Theme, Copyright 2011 WordPress.org Twenty Eleven is distributed under the terms of the GNU GPL) •  派生テーマは、元のテーマの著作権情報を保持/宣言す る事が必須です。
  60. 60. 8. ライセンス(使用許諾) 商標 •  テーマは、過去または現在どこかしらのウェブサイトの デザインを複製し作成してはいけません。複製以外のデ ザインは随時検討されます
  61. 61. 8.1. 有償テーマ •  無料テーマ(すなわち freemium やup-sell テーマ)の有 償バージョンはGPL互換ライセンスの下でリリースする 事が必須です。 •  無料テーマの有償バージョンは、有償を理由に WordPress コアの機能をロックしてはいけません。 •  有償テーマは、テーマレビューチームの裁量で、より厳 格なテーマレビューガイドラインに諮られる事がありま す。
  62. 62. 8.2. 同梱リソース •  テーマは、テーマのライセンス文によってカバーされて いない任意の同梱リソースの著作権とライセンス情報を 明示する事が必須です。この情報はREADMEドキュメ ントに記載する事が推奨されます。
  63. 63. 8.2.1. GPL 互換フォントライセンス •  GNU ファウンデーションおよび Fedora プロジェクトは GPL ソフト ウェアでして使えるフォント一覧を管理しています。 •  WordPress テーマディレクトリに申請するテーマに同梱するフォント は、以下のいずれかのライセンスであることが必須です。 Arphic Public License (Arphic), Baekmuk License (Baekmuk), Bitstream Vera License (Bitstream Vera), GNU GPL (with font exception) (GPL), GUST e-Foundry Font License/LaTeX Project Public License (LPPL), IPA Font License (IPA), Liberation Font License (Liberation), LaTeX Project Public License (LPPL), mplus Font License (mplus), ParaType Font License (PTFL), SIL Open Font License (OFL), STIX Fonts User License (STIX), Wadalab Fonts License (Wadalab), XANO Mincho Font License (XANO),
  64. 64. 8.2.2. GPL 互換アイコンセット 以下は互換アイコンセットの例です。 Genericons (GPL), Post Formats & Real Estate Icons (GPL), WooCons Set #1 (GPL), Gallery2 Icons (GPL), Lullacons Pack #1 (GPL), GNOME Desktop Icons (GPL), Elegant Media Icons (GPL), Humility Icons (GPL), Crystal Icons (GPL), Flat For Linux (GPL), Ultimate GNOME Icons (GPL), Shrunk Pidgin Smilies (GPL), Twotiny Icons (GPL), Web Design Creatives (GPL), realistiK Reloaded (GPL), Carpelinx (GPL), DarkGlass Reworked (GPL), Lynx Black (GPL), KDE Crystal Diamond (GPL), 26 Social Media Icons (GPL), Macchiato ‒ Social and spirit20 (GPL), Faenza Icons (GPL), Lifetime Social Networks (GPL), Social Media Icons from Elegant Themes (GPL), We got icons! (GPL), Font Awesome 3.0 (SIL Open-Font License), Elusive Icons (SIL Open-Font License), Entypo (SIL Open-Font License),
  65. 65. 9. テーマ名 テーマ名のガイドラインへの適応は新規テーマにおいては 必須であり、既存テーマに対しては推奨です。 •  テーマは、その名前に WordPress の語句を含める事 はできません。例えば「My WordPress Theme」 「WordPress AwesomeSauce 」「AwesomeSauce for WordPress 」 などが承認される事はありません。 •  テーマは、例えば「AwesomeSauce Theme」のよう に、名前に Theme の語句を含める事はできません。
  66. 66. 9. テーマ名 •  テーマは、例えば「WP AwesomeSauce」のように、 その名前にWPの接頭辞を使うことができます。 •  テーマは、その名前にバージョン固有のマークアップ関 連の用語(例えばHTML5、CSS3など)を使用する事はで きません。
  67. 67. 9. テーマ名 •  テーマは、その名前に例えば「Blog」「Web Log」 「Template」「Skin」などの用語を使用する事はでき ません。 •  テーマは、その名前に例えば「AwesomeSauce by John Q 」などのように、作者のクレジットを入れるこ とはできません。
  68. 68. 9. テーマ名 •  テーマは、その名前に例えば「WP Twenty Eleven」 「Twenty Eleven WP」「The Twenty Eleven」など、 関連するテーマの名前を含める事はできません。 そして style.css のヘッダーブロックで定義されるテーマ 名は、公式テーマリポジトリでのテーマスラッグとして使 用される事をご注意ください。なおその際、文字は全て小 文字となり、スペースはハイフンに置き換えられます。例 えば「CamelCase Name」は「camelcase-name」とな ります。
  69. 69. 10. クレジットリンク テーマは、クレジットリンクを設定する事が推奨されています。そし て使用した場合は、クレジットリンクが適切である事が必須です。 •  テーマは style.css 内で「Author URI 」と「Theme URI」を指 定する事ができます。 •  「Theme URI」が設定されている時、それは具体的にテーマに関 連したページヘリンクする事が必須です。デモサイトやでもページ であるとしたら、その内容はテーマ自体に関係しているはずです。 •  「Author URI」が設定されている時、それはテーマ作者個人の ウェブサイトまたはプロジェクト、開発ウェブサイトにリンクする 事が必須です。 •  テーマは、ユーザとテーマとの接点を確保するために、この2つの 少なくとも一方を設定する事が推奨されています。
  70. 70. 10. クレジットリンク テーマは、 必要に応じてテーマフッターに一般向けのクレジットリン クを含む事ができます。 •  使用するとしても1つのみで、複数のクレジットリンクを設定する 事は認められません。 •  クレジットリンクを使用する場合、それは 「Theme URI」また は「Author URI」のいずれかである事が必須です。 •  クレジットリンクのアンカーテキストとタイトルは、関連するサイ トに対して適切である事が必須です。それがスパムや SEO 目的と なっている時には、テーマは自動的に棄却となる事があります。 •  2つめのクレジットリンクとして「Powered by WordPress」と <http://wordpress.org>へリンクする事は許容されます。
  71. 71. 10. クレジットリンク テーマは、 必要に応じてクレジットリンクを追加するためのテーマオ プションを設定する事が許されています。 •  そのように使用する時、テーマオプションは明示的に選択する事が 可能であり、そしてデフォルトでは有効であることが必須です。 •  そのように使用する時、テーマオプションは単に有効/無効を選択 するのみでなく、テキストとリンクをユーザが変更できる事が推奨 されます。 •  テーマオプションで設定されるクレジットリンクは、先の要件を免 除されますが、一方でこの機能が乱用される時には、テーマレ ビューチームには独自の判断でテキストとリンクを禁止する権利を 有します。
  72. 72. 10. クレジットリンク テーマはGPL(または互換)であるため、テーマ作者は、こ れらのリンクがユーザーによって保持される事を要求する ことは禁じられています。作者のウェブサイトへのリンク を維持するために、テーマのユーザーに依頼する適切な方 法は次のとおりです。 「これは完全に任意ですが、もしあなたがこのテーマを気 に入ってくれたなら、私のクレジットリンクを表示してく れると嬉しいです」
  73. 73. 10. クレジットリンク •  「Author URI」と「Theme URI」の妥当性の決定は、テー マレビューチームによる、唯一かつ最終的な判断に委ねられ ます。「Author URI」のポイントは、それが個人的なサイト という性質である事です。 「Theme URI」の場合は、単な るデモサイトというだけは不十分であり、URIは 主にテーマ に関連するコンテンツを含める必要があります。 •  テーマ概要に含まれるリンクは、適切に「Author URI」要件 およびテーマ説明書に準じて定義されなければなりません。
  74. 74. 11. テーマ説明書 テーマは、任意のカスタム機能またはオプションの使用を説明 するのに十分な資料を提供する事が必須です。 •  テーマは設計上存在する全ての制限、エラーメッセージなど、 エンドユーザに対しあらゆるドキュメントを提供する事が必 須です。 •  テーマは、プラグインのreadme.txt を基に readme.txtファ イルを作成し、テーマファイルに同梱する事が推奨されます。 •  readme.txt の代わりに、テーマはバージョンごとの変更履歴 を記録したログを同梱する事ができます。
  75. 75. 11. テーマ説明書 テーマに含まれている説明書では、以下の点について明確 にしてください。これらは多くのユーザにとって有益な情 報です。 •  テーマとテンプレートが何を実現するか。 •  テーマ階層の命名規則に準じているか。 •  あるならば、テーマの不備。 •  テンプレートやスタイルシートのファイル中のコメント の詳細。特にテンプレートやスタイルシートの修正・更 新に対してはコメントを付けてください。
  76. 76. 11. テーマ説明書 •  カスタムリライトルールや何らか特殊な追加テンプレー トファイル、画像などを使用している場合、それらに係 る特別な要件がある場合は、テーマ動作のために、ユー ザが設定すべき内容を明示してください。 •  可能であれば、サポートと質問の連絡先情報を(ウェブ サイトまたはメールアドレス)提供してください。
  77. 77. 12. テーマユニットテスト テーマはテーマユニットテストのすべての要件を満たす事 が必須です。 http://codex.wordpress.org/Theme_Unit_Test
  78. 78. 12. テーマユニットテスト(テスト項目) •  レイアウト •  文章の読みやすさ •  画像 •  長いタイトル •  本文なし •  タイトルなし •  たくさんのカテゴリ •  たくさんのタグ •  パスワード保護 •  コメント •  コメント無効 •  たくさんのトラックバック •  他、各種投稿フォーマット 表示テスト
  79. 79. 13. テーマの旧式化 テーマは、テーマリポジトリに一旦登録したら、最新に保 たれなければなりません。 最新バージョンの WordPress に対応した、現在のテーマ レビューガイドラインに準じていないあらゆるテーマは、 公開停止の対象となる可能性があります。
  80. 80. 14. アクセシビリティ 「accessibility-ready」タグを使用したテーマは、アクセシビリティのガ イドラインを満たしている必要があります。 1.  画像 2.  メディア 3.  見出し 4.  リンクテキスト 5.  キーボードナビゲーション 6.  コントラスト 7.  スキップリンク 8.  フォーム 9.  ツール 10.  承認されないもの
  81. 81. 14. アクセシビリティ テーマアクセシビリティへの準拠は、 wordpress.org テーマリポジト リに適合したテーマに対して選択的に調査されます。リポジトリに承 認された後、「accessiblity-ready」タグを持つテーマ(または最新版) は、独立したアクセシビリティ審査を受ける事になります。 このレビューを通過したテーマは「accessiblity-ready」タグを使用 する事が許可されます。一方、通過できたなかったテーマ作者は、 「accessiblity-ready」タグなしでの再申請、あるいは要件を満たす ために要求された変更を行う事が求められます。 開発者はそれら「accessiblity-ready」タグ準拠のための最小要件を クリアする事が奨励されます。 アクセシビリティレビューに落ちたテーマも、テーマリポジトリに加 えるための承認を得る事は可能です。
  82. 82. 14.1. 画像 すべての装飾的な画像は、CSSを使用して実装されなけれ ばなりません。テーマ作者がテンプレートに画像を追加す る場合、作者は alt 属性またはそれに準ずる何らかの手段 を組み込むまなければなりません。 監査時、「a simple alt text decision tree※W3C」は、画像に適切なalt属性 を使用されているかどうか確認するために使用されます。
  83. 83. 14.2. メディア メディアリソースは、初期設定に対して、ユーザーの行動 なしで自動再生または変更されてはなりません 。これは、 オーディオ、ビデオ、またはイメージ/コンテンツスライ ダーやカルーセルなどのリソースが含まれています。
  84. 84. 14.3. 見出し ページにサブセクションの見出し要素の使用を含むテーマテンプレー トは、合理的なHTMLの見出し構造を使用する必要があります。 見出 しのマークアップは視覚効果のために使用する事はできません。これ は良い視覚構造を提供する事を犠牲にしないような構造のため見出し 要素であれば画面外に配置されるかもしれません。構造上必要な見出 しは、視覚効果上 画面外に入りされる事もあります。 具体的には、テーマで定義されたサブセクションは、見出し要素を使 用しなければなりません 。 これは、記事の文脈で使用されるとの見出 しでウィジェットのタイトルをラッピングする際、見出しに記事のタ イトルが含まれるためです 。
  85. 85. 14.4. リンクテキスト リンクは、「続きを読む…」のような反復的な非コンテキストのテキ スト文字列を避けなければなりません。 また、コンテキストから取り 出された時に意味をなすべきであす。露出した URL テキスト単体は、 リンクとして使用する事はできません。 コンテキスト固有のテキスト が画面外に配置される事があるかもしれません。 コアでの定義リンク「続きを読む」も、このガイドラインに該当して しまいます。 ただ、これらのリンクを交換するためのフィルタを使用 する事ができるようになっています。そして記事のタイトルは一般に、 通常の指示テキストに加えて使用されるべきです(以下、例)。
  86. 86. 14.4. リンクテキスト(例) add_filter( 'get_the_excerpt', 'theme_custom_excerpt_more',100 ); add_filter( 'excerpt_more', 'theme_excerpt_more',100 ); add_filter( 'the_content_more_link', 'theme_content_more', 100 ); function theme_continue_reading( $id ) { return '<a class="continue" href="'.get_permalink( $id ).' > Read more: ".get_the_title($id)."</a> ; } function theme_excerpt_more($more) { global $id; return '… '.theme_continue_reading( $id ); } function theme_content_more($more) { global $id; return theme_continue_reading( $id ); } function theme_custom_excerpt_more($output) { if (has_excerpt() && !is_attachment()) { global $id; $output .= ' '.theme_continue_reading( $id ); } return $output; }
  87. 87. 14.5. キーボードナビゲーション テーマ作者はナビゲーションメニューやフォーム、ボタン、テキストリ ンクにおいてキーボードでフォーカスした際に視覚的に明示する効果 を提供しなければなりません。そしてキーボードでのナビゲーション は直感的かつ効果的でなければなりません 。 ナビゲーションメニューに共通する問題は、{display:none;/ display:inline;}を使用して、表示/非表示を制御するドロップダウンメ ニューを使用する事です。{display:none;}はリーダーからもオブジェ クトとして除外されてしまうため、使用すべきではありません。 実際にテストする事がナビゲーションメニューのアクセシビリティを検 証するための最良の方法です。NVDA はフリー・オープンソースの Windows x Firefox で動作する素晴らしいリーダーです。 Mac や iOS においては VoiceOver を使用してください。
  88. 88. 14.6. コントラスト テーマ作者は、すべてのバックグラウンド/フォアグラウンドの 色が、カラー明度用の Webコンテンツアクセシビリティガイド ライン(WCAG)2.0に指定されたレベルAAのコントラスト比 (4.5:1)以上である事を保証しなければなりません。 ツール: Juicy Studio Accessibility Add-on for Firefox WAVE Web Accessibility Tool リファレンス: WCAG 2.0 Color Criteria
  89. 89. 14.7. スキップリンク テーマは、いかなるページからも直接コンテンツやナビゲーションに り着ける機構を含まなければなりません。これらリンクは、最初は 画面外に配置されているとしても、スクリーンリーダーで利用できなけ ればならず、キーボードナビゲーションでフォーカスされた時には画面 内に表示されなければなりません 。 最低限、以下要件に準拠する事が必須です。 •  スクリーンリーダーやキーボードナビゲーションで最初に知覚され る項目である事。 •  リンクに移動した時、キーボードフォーカスが表示される事。 •  アクティブになった時、ページのメイン領域にフォーカスが移動す る事。
  90. 90. 14.8. フォーム コメントフォームは適切なフィールドラベルを持たなければなり ませんし、formタグ内のすべてのコンテンツは、明示的に フォームコントロールに関連付けられている必要があります。投 稿の際のレスポンスは知覚可能でなければなりません。 単一の入力(例えば標準の検索フォームなど)が含まれるフォーム には、必要に応じて入力ラベルを表示しておかないよう配置す る事があります。お問い合わせフォームなど、非標準のフォーム を組み込むテーマは、同じ基準を使用して審査されます。
  91. 91. 14.8. フォーム デフォルトのWordPressのフォームを置き換える時… •  <label>要素を削除したり、それぞれの入力から label の 関連付けを解除してはいけません。 •  スクリーンリーダーに対応していない、例えば AJAX な どのフィードバック機構を作成してはいけません。詳細 は ARIA を参照してください。
  92. 92. 14.9. ツール アクセシビリティテストのための有益な開発ツールは以下 URLでメンテナンスされています。 Make WordPress Accessible / Useful Tools
  93. 93. 14.10 承認されないもの 次のいずれかを含める事は承認されません。 •  tabindex の値が特定の状況を除いてマイナスあるいは ゼロである事。 •  accesskey 属性を含める事。 •  ユーザに通知なく新しいウィンドウやタブを生成する事。
  94. 94. 15.正く綴る WordPress テーマは、表示されるすべてのテキストに正しく WordPress と綴る必要があります。 W と P は大文 字です。
  95. 95. 余談 これだけのチェックを通ってるので、公式テーマは機能が盛り だくさん、安心・安全 …のハズなのです、が。 私が使ってる公式テーマ 準拠してない箇所があるような…? _S(Underscores) http://underscores.me/ https://github.com/Automattic/_s/

×