2012年11月28日水曜日

wordpress の header.php(前半)

歳を取ってくると好奇心や探究心を維持するのが難しいです。6、70歳になっても元気に山登り、果てはヒマラヤまで登っちゃう人がいるのだから体力もさることながら、精神の若さが素晴らしいですね。などと関心しつつ読書を始めたいと思います。でも、長いので半分ずつ。。。
<?php
/**
 * The Header for our theme.
 *
 * Displays all of the <head> section and everything up till <div id="main">
 *
 * @package WordPress
 * @subpackage Twenty_Eleven
 * @since Twenty Eleven 1.0
 */
?><!DOCTYPE html>
<!--[if IE 6]>
<html id="ie6" <?php language_attributes(); ?>>
<![endif]-->
<!--[if IE 7]>
<html id="ie7" <?php language_attributes(); ?>>
<![endif]-->
<!--[if IE 8]>
<html id="ie8" <?php language_attributes(); ?>>
<![endif]-->
<!--[if !(IE 6) | !(IE 7) | !(IE 8)  ]><!-->
<html <?php language_attributes(); ?>>
<!--<![endif]-->
<head>
<meta charset="<?php bloginfo('charset'); ?>" />
<meta name="viewport" content="width=device-width" />
<title><?php
  /*
   * Print the <title> tag based on what is being viewed.
   */
  global $page, $paged;
  wp_title('|', true, 'right');
  // Add the blog name.
  bloginfo('name');
  // Add the blog description for the home/front page.
  $site_description = get_bloginfo('description', 'display');
  if ($site_description && (is_home() || is_front_page()))
    echo " | $site_description";
  // Add a page number if necessary:
  if ($paged >= 2 || $page >= 2)
    echo ' | ' . sprintf(__('Page %s', 'twentyeleven'), max($paged, $page));
  ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('stylesheet_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
<?php
  /* We add some JavaScript to pages with the comment form
   * to support sites with threaded comments (when in use).
   */
  if (is_singular() && get_option('thread_comments'))
    wp_enqueue_script('comment-reply');
  /* Always have wp_head() just before the closing </head>
   * tag of your theme, or you will break many plugins, which
   * generally use this hook to add elements to <head> such
   * as styles, scripts, and meta tags.
   */
  wp_head();
?>
</head>
  1. 条件付きコメント(12行目〜23行目)
    単なるコメントと思いきや、wikipediによれば「条件付きコメント(じょうけんつきコメント)とは、Microsoft Internet Explorerによって解釈されるHTMLソースコード中にある条件付きのステートメントである。条件付きコメントは、マイクロソフトのInternet Explorer 5ブラウザーで初めて登場し、バージョン9までサポートされた。なお、バージョン10以降はこの機能は廃止され、他のブラウザと同様、単なるコメントとして扱われる事が明らかにされた。」だそう。身勝手に規約外の仕様作って身勝手に廃止とは、なんという事だろう。wikipedia の説明に出てくるダウンレベルとは、IE5以下とその他のブラウザを指すそうで、名付けからしてタカビーな感じです。おまけにIE10で自らダウンレベルに陥るとはどうなっているのでしょう。

  2. language_attriutes関数(wp-includes/general-template.php)
    該当部分のソースコードを確認してみると、以下のように dir 属性と lang 属性に変わっている
    
    
    
    
    
    
    
    
    • html タグの属性 id は、ブラウザの種類を特定するためにここで設定しているよう。積極的に利用している部分はスタイルシートの#ie8関連と思われるので、後々の対応しやすさも含めた定石コードなのでしょう。
    • html タグの属性 dirとは、「html要素に dir="" を追加すると、文書全体の書字方向を指定できます。」(参照)
    • html タグの属性 lang とは、「html要素に lang="" を追加すると、文書全体の言語を示すことができます。」(参照)

  3. メタ情報(25行目〜26行目)
    METAタグはヘッド領域に記述されるタグで、文書で使用されている言語や文字コードの指定、キーワードや説明などを埋め込む事ができます。参照)
  4. グローバル変数($page、$paged)
    WordPressのページ関係のグローバル変数。(参照)

  5. wp_title 関数(/wp-includes/general-template.php)
    単体記事、日付ベースのアーカイブ、カテゴリ、著者ページのそれぞれに対応したタイトルを出力する関数。(参照)

  6. bloginfo関数(wp-includes/general-template.php)
    使用中のWordPressブログに関するさまざまな情報を出力。 (参照)

  7. get_bloginfo関数(wp-includes/general-template.php)
    使用中のWordPressブログに関するさまざまな情報を出力。bloginfo が標準出力するのに対し、get_bloginfoは情報を返す関数。bloginfo関数は、"echo get_bloginfo( $show, 'display' );" しているのみ。ここでは、description(「一般設定」管理画面で指定したブログの説明文)を取得している。(参考)

  8. is_home 関数(wp-includes/query.php)
    この条件分岐タグは、サイトのメインページ(ホームページ)が表示されているかどうかを判定します。これは TRUE または FALSE の値を返す boolean 関数です。(参照)

  9. is_front_page 関数(wp-includes/query.php)
    この条件分岐タグは、サイトのフロントページが表示されているかどうかを判定します。これは TRUE または FALSE の値を返す boolean 関数です。TRUE を返すのは、管理画面の 設定 > 表示設定 > フロントページの表示 にて、「最新の投稿」を選択していて現在最新の投稿ページが表示されている場合と、「固定ページ」を選択していて現在「フロントページ」に指定したページが表示されている場合です。(参照)

  10. link rel(profile,stylesheet,pingback)
    「head 内で使う meta、link のまとめ」から仕入れた情報ですが、pingback は仕組みが良くわからないです。profile はその必要性も良くわからないです。今後の課題です。
    • rel="profile" は Google のSocial Graph から派生したフォーマット(XFN)ようだが、本家の Social Graph のサービスは停止しているため、取り扱い状況が曖昧の状態の様子。
    • rel="stylesheet" は、リンク先のスタイルシートの適用。
    • rel="pingback" は、web バブリッシングソフトウェアがユーザに代わって、リンク先のサイトにリンクを張ったことを通知し、リンク先にリンク元のドキュメントへの逆リンクの自動生成を可能にするもの。(参照)

  11. is_singular 関数(wp-includes/query.php)
    シングルページ (固定ページ、個別投稿ページ、添付ファイルページ) の判定で、is_single()、is_page() 、is_attachment() のいずれかが真である場合

  12. get_option 関数(wp-includes/option.php)
    optionsデータベーステーブルから、指定したオプションの値を取得する安全な方法です。希望するオプションが存在しない場合は、値が関連付けされず、FALSE が返されます。 (参照)

  13. wp_enqueue_script 関数(wp-includes/script-loader.php)
    コメントリプライ用のジャバスクリプト(comment_reply.js)の参照タグの出力キューに登録。キューはユニークに維持されるため、重複ロードが避けられるようになっている。参照タグの出力 wp_head 関数で行われている。(参照)

  14. wp_head 関数(wp-includes/general-template.php)
    内部は、do_action('wp_head');を実施しているのみ。ラベル毎にサービス関数が仕掛けられたテーブルから"wp_head"に一致するサービス関数を実行することにより、ヘッダ内に必要な link や script を出力する。
    デフォルトで登録されているサービス関数は以下と思う。
    default-filters.php:add_action( 'wp_head',             'wp_enqueue_scripts',              1     );
    default-filters.php:add_action( 'wp_head',             'feed_links',                      2     );
    default-filters.php:add_action( 'wp_head',             'feed_links_extra',                3     );
    default-filters.php:add_action( 'wp_head',             'rsd_link'                               );
    default-filters.php:add_action( 'wp_head',             'wlwmanifest_link'                       );
    default-filters.php:add_action( 'wp_head',             'adjacent_posts_rel_link_wp_head', 10, 0 );
    default-filters.php:add_action( 'wp_head',             'locale_stylesheet'                      );
    default-filters.php:add_action( 'wp_head',             'noindex',                          1    );
    default-filters.php:add_action( 'wp_head',             'wp_print_styles',                  8    );
    default-filters.php:add_action( 'wp_head',             'wp_print_head_scripts',            9    );
    default-filters.php:add_action( 'wp_head',             'wp_generator'                           );
    default-filters.php:add_action( 'wp_head',             'rel_canonical'                          );
    default-filters.php:add_action( 'wp_head',             'wp_shortlink_wp_head',            10, 0 );
    default-filters.php:    add_action( 'wp_head', 'wp_no_robots' );
    
    

0 件のコメント:

コメントを投稿