カテゴリー : WordPress

WordCamp 2011 東京 セッションの備忘録

出席したセッションで自分が気になった事のキーワードになりそうな部分は以下の通り。

  1. プラグインを作って世界と交流しようぜ(宮内隆行氏)
    公式プラグインに載せることのメリット

    • 自動アップデート(ユーザーに知らせる手間が省ける)
    • 容量無制限のバックアップや差分表示が可能
    • 利用者からのフィードバック(悔しい内容が多いようだ)

    審査は緩いようで、蹴られることはほとんどないそうだ。英語は翻訳ソフトを使って掲載しておけばいいとか。そう言えば、他言語翻訳で英語圏以外の国の人たちとは、お互い英語が不得手なので返って意思が通じやすい、と話してました。

    マルチリンガルのプラグイン wpml

  2. WordPressの動作原理詳説(大曲仁氏)
    独自理論と称して、サイトがアクセスされたとき WordPress がどのように表示するか、以下の4つフェーズで説明されました。

    • フェーズ1 起動
      wp-config、wp-setteing、プラグインなど読込み次の表示条件を決めるための前処理。plugin_loaded、setup_theme、init、up_loaded などのフック。
    • フェーズ2 表示条件
      wp-include/class を読込み、URLをリライトして標準リクエスト形式に変換する処理。parse_request、send_headers などのフック。
    • フェーズ3 データベースリクエスト
      wp-include/query を読込み、データを読込む。この時点で条件分岐タグが全て有効になるようだ。pre_get_posts、posts_selection、wpなどのフック。
    • フェーズ4 テンプレート読込み・表示
      template_redirect、wp_head、wp_footer、shutdown などのフック。

    実行フローを見易くした説明のブログのリンク先を紹介してくれた。
    WordPressの実行フローを視覚化してみる

  3. WordPressの現在とこれから(マクラケン直子女史)
    2003年の0.70から現在の3.2に至るまでのダッシュボードを画像で紹介。スライドのリンクがツィートされてました。
    WordPressの現在とこれから
    3.3では管理画面のメニューがフライアウト方式になって、目的とする作業に入るためのクリック数を減らすなど改良しているとの事。ともあれ、常にブログに記事を入力する作業の環境をより高める(フルスクリーン入力など)事が、今後も開発の中心とするポリシーのようです。

    アップグレード時に表示するポインターAPI、アクセス解析 Jetpack

  4. 未来を見据えたレスポンシブ・パブリッシング(こもりまさあき氏)
    インターネットのアクセスはPCに限らず、PADやスマホが主流となってきている。そんな中でクライアントに合わせた表示、あるいはコンテンツ自体のレスポンシブなど。そして電子書籍がこれから流行るとすれば ePub 形式など。ちょっと乱暴ですが、HTML5とCSS3で組み立てておくことで、それぞれ対応しやすいとの事。
  5. たった一人の反乱~WordPressで電子書籍を売る~(高橋文樹氏)
    テクニカルと言うより、出版業界のルールから外れてご自分で電子書籍を販売する、と言うチャレンジャーの話でした。アドセンスを利用したけど足が出てしまったりとか、Red Hat 創立者の1人、Bob Young による販売サイトLuluが日本にも来る、と思ったら中止になってしまったとかありました。現在の日本で電子書籍がビジネスになるかと言うと、かなり厳しいものがあるようです。 そしてアントレプレナーの道はいばらの道ではないかと。

    販売プラグインソフト Literally WordPress

  6. WordPressハイパフォーマンスチューニングReloaded(をかもと氏)
    バックエンドのチューニングに関する話で、Debug Bar や Debug Bar Extender を利用して先ずはボトルネックを探るところから始めるように、との事。難しい内容はさておいて、例えば存在しないファイルのアクセスがあったりすると、mod_rewirte を使っている場合、画像ファイルのアクセスで WordPress をロードしたりして時間を食うので、favicon.ico とか注意する。キャッシュの話やNginxの話など。前出のこもりまさあき氏と共同執筆中で、来年早々にWordPressの本を出版される予定とか。チューニングの情報が満載かも。こもり氏による2010年横浜での高速化と共に、以下のリンクを見ると幸せになれる予感が。
    Wordcamp 横浜2010 WordPressをより高速に
    http://dogmap.jp/wctokyo2011/#intro

1200人もの来場にも拘らず、3つのトラックをスムーズに進行させたスタッフの皆様、ありがとうございました。この次も参加したい気持ちでいっぱいです。

WordPress HTML5 で time タグの pubdate 属性に ISO 8601 形式の日時を設定

HTML5 の勉強も兼ねて Twenty Eleven を参考にしながらテンプレートを作っていたところ、投稿内容や日時が article タグに含められ、日時は time タグを使って pubdate 属性を指定して表示するようになっていた。

で、よく見ると

datetime="2011-10-24T11:12:46+00:00"

となっていた。う~ん、日本時間なら「+09:00」じゃあなかったかな?

WordPress ループ内なら「the_time(‘c’)」で ISO 形式で表示できるのだが、タイムゾーンが「+00:00」になってしまい、日本時間と9時間ずれてしまう。

直接表示されないので誰も気にしないのだが、職業柄妥協できない(´Д`;)。

という事で、それなら GMT を取得すればいいので「get_post_time(‘U’, true)」を使うと

datetime="2011-10-24T02:12:46+00:00"

になり、取りあえず正しい日時になった。でも、美しくない。そこで強引にできないかいろいろ試してみた。どうやら次のようにするのが一番簡単なようだ。

the_time('Y-m-d¥TH:i:s+09:00');

これで

datetime="2011-10-24T11:12:46+09:00"

と表示された。

(WordPress Ver.3.2.1)

WordPress 3.2.1 Multisite で気が付いた事とか

忘れないように表題の件で2件ほど。

1件目

プラグインで設定したカスタムポストタイプのアイキャッチ画像で、管理画面の編集ページで「register_post_type()」の「supports」パラメータで「thumbnail」を指定しているにも関わらず、アイキャッチ画像のアップロード・指定をするメタボックスが表示されない。

ドキュメントを調べて行くと、「add_theme_support()のMultisite」のところにヒントが。

マルチサイトの場合、ネットワーク管理の「設定:ネットワークの設定」で「アップロード設定」において「メディアアップロードの画像」がチェックされてなければ表示されないようだ。

この部分をすべてチェックしたら表示するようになった。

2件目

同じくプラグインソフトで「wp」をフックしての処理で、GETパラメータに「day」というキーで日付を取り込もうとしたところ、シングルでは何もなかったのにマルチサイトになったら、ページが見つからない、というエラー画面になってしまった。

いろいろ試してみたところ、キー名を「date」に変更したら処理できるようになった。「day」はどうやら WordPress の別の処理で食われてしまい、表示ページのパースが正常に動作しなくなっているのかもしれない。

上記2件はいずれも 3.2.1 で出くわした現象です。

2012-04-21
3件目

2件目と同様「wp」をフックしての処理で、POSTパラメータに「name」というインデックスを使ったところ、ページの名前として取り込まれるようで「ページがみつからない」と表示された。

マルチサイトでない状態で発生。バージョンは 3.3.1。

WordPress 3.1 マルチサイトインストールの手順

WordPress をインストールして、サブディレクトリ型のマルチサイトにするための手順の覚書きです。参考ページは「WordPress 3.0 をマルチサイト化する方法」です。

config.php を書き直すだけでインストールできると勘違いしていたため、「Error establishing a database connection」と大きい文字で表示されて怒られたが、訳が分からなかった。

1.手順

  • 通常インストール(/wp-admin/install.php実行)後、wp-config.phpに「define(‘WP_ALLOW_MULTISITE’, true)」定義文を、「require_once(ABS_PATH . ‘wp-setting.php’)」命令以前に記入・保存する。
    追記(2011-10-07):サブディレクトリのマルチサイトをインストールするときに、よくはまるのがココ。最初は wp-config.php のDB関係だけ設定して、シングルのインストールする。次に WP_ALLOW_MULTISITE を設定して以下に進む。
  • 管理者権限でログインし、[ツール]-[ネットワーク]を設定、保存する。
    追記(2011-10-07):.htaccess の mod_rewrite に関する設定と、wp-config.php に設定するマルチサイトに関する情報が表示されるので、各ファイルを更新する。
  • サブディレクトリでマルチサイト化(wp-content/blogs.dir)を作り、メニューのネットワークセットアップを選択すると、「wp-config.php」に設定する定義文と「.htaccess」に設定する mod-rewrite 指定文が表示されるので、それぞれのファイルに指定通りコピー、保存する。
  • ログインし直せば、ネットワーク管理者としてのログインとなる。

2.マルチサイト化するためのインストール注意事項

  • サイトのトップURLにインストールする。/wordpress のようなサブディレクトリにインストールすると、マルチサイト化できない。
  • 管理画面の設定操作で .htaccess が書き換えられる場合があるようなので、その場合はネットワーク管理者でログインして、ネットワークセットアップの内容で保存し直す。
  • セーフモードで動作する xrea では、ファイルのアクセス権限や所有者管理でハマる事がある。ファイルのアクセス権限が 755 だと書込みエラーが起きるので 757 へ。
    また、モジュール動作で作られるディレクトリの所有者、グループが apache になっているので、必要に応じて自分のユーザー:グループに変更する必要がある。ただし、SSHでは所有者を変更できなかったので、削除して再登録するようにした。ただし所有者は、xreaによると週一回巡回して書き直してくれるようだ。
    PHPから作成されるファイルの所有権の定期的な変更について

記憶が少し曖昧なので、気が付いた所でこの内容は手直しします。

WordPress attachmentページ 画像へのコメントを禁止するには?

今の時点で管理画面から禁止する方法がないようなので、自分用後日のための投稿です。

メディアの新規登録でアップロードした画像をブログに貼り付けると、画像を表示するリンクが作成され、そのリンクから attachment.php テンプレートで画像やそのタイトルを表示することができる。

そしてその画像にコメント欄が追加でき、ブログと同様、コメントの入力や表示ができるようになる。

このコメント欄だが、画像ごとに禁止できないか調べてみたが、管理画面からは禁止する方法がないようなのだ。

WordPress の機能を使って画像をアップロードすると、設定で指定した画像サイズのファイルを追加すると同時に、wp_posts テーブルに post_status=inherit、post_type=attachment、guid=urlパス の各値がセットされ、ブログと同じように1レコード追加される。

メディアのイメージ編集で「説明」欄は post_content カラム、「キャプション」欄は post_excerpt カラムにその内容が登録される。「代替えテキスト」欄は別で、wp_postmeta テーブルに meta_key=_wp_attachment_image_alt の値で登録される。

さて、本題の attachment ページで表示された画像へのコメント欄の禁止だが、wp_posts テーブルの comment_status 欄を closed (通常はopen) にすれば、テンプレートからコメント欄を取り除く事ができる。

が、今のところ、管理画面からはできないようなので、いずれプラグインで操作できるようにするのがいいのかも。

ところで、/wp-admin/post.php?post=id番号&action=edit として強引にやってみたが、編集画面にはタイトルと説明しか表示されなかった。