鳥山本舗

の記事

  • Feedにアイキャッチ画像を追加

    以前フィードに画像を追加する方法として、フィードテンプレートを上書きする方法をメモしていた。画像を追加するだけなら、もっと簡単な方法があった。

    [PHP]
    function my_thumbnail_feeds($content) {
    global $post;
    if(has_post_thumbnail($post->ID)) {
    $content = ‘

    ‘ . get_the_post_thumbnail($post->ID, array(150,150)) . ‘

    ‘ . $content;
    }
    return $content;
    }
    add_filter(‘the_excerpt_rss’, ‘my_thumbnail_feeds’);
    add_filter(‘the_content_feed’, ‘my_thumbnail_feeds’);
    [/PHP]

    なるほど、フィード用にもフィルタがあったんだ!

  • マルチサイトでWPtouch

    WPtouchの無料版では、機能制限としてテーマディレクトリを設定することができない。テーマディレクトリは/plugins/wotouch/themes/default/に固定されているので、スマホ用テーマを自作した際には、このディレクトリ下のファイルを差し替えるのが無難としてきた。
    このほど複数あったブログをひとつのWordPressにまとめ、マルチサイトとして管理するようにしたところ、ここでつまずいた。ブログは複数あるのに、WPTouchのテーマディレクトリが固定(ひとつしかない)ではブログによってスマホ用テーマを分けることはできないではないか。

    おとなしく有料版にグレードアップするしかないのか?
    そもそも有料版ではマルチサイトに対応しているのか?

    と諦めモードになりつつ、ダメモトでWPtouchのコアコードを修正する手段にでた。wptouch.phpの中にreturn ‘default’としている箇所が2つある。まさにテーマディレクトリを固定で返しているところだ。ここでディレクトリ名を操作できそうだ。get_blog_ID()によりマルチサイトのブログIDが分かるので、この値によってテーマ名を分ければよさそうだ。たとえばブログIDが2であればexample-2、3であればexample-3というように分岐してそれぞれのディレクトリにテーマファイルを置けばよい。結果、いまのところうまく動いている!

  • blogというサブディレクトリ名は禁止

    以前はルート直下の”blog”というディレクトリにWordPressをインストールして運営していた当ブログである。WordPressのバージョンアップに伴い、マルチサイトのサブディレクトリとしてブログを構築することにした。

    ルートディレクトリにWordPressをインストールし、ネットワーク管理者の[新規サイトを追加]を行ったところ、エラーで作成できなかった。

    以下の語句は WordPress の機能によって予約されており、ブログ名として使うことはできません: page, comments, blog, files, feed

    とのことで、”blog”というブログ名はダメらしい。
    そういわれても、これまで”blog”だったのだからURLは変えたくない。CMSとして複数サイトを運営できるシステムであるなら、そのなかに”blog”という名前のブログを作成するのは自然な要求ではないのか。そうこうしているうちに、ネットワーク管理者の設定に[登録の設定]-[禁止名]の項目を見つけた。そこに、

    www web root admin main invite administrator files blog

    と設定されているので、おぉここか!?と思って”blog”を削除した。が、新規サイトを作成しようとしても同じエラーである。”blog”はどうしてもダメらしい。設定項目の値と、エラー内容が異なるではないか、この設定はなんなのか?

    仕方なく本ブログは別のサブディレクトリ名で作成し、.htaccessにリダイレクトの設定をした。

  • WordPressを3.1.2にアップデート

    ちょうど連休直前にWordPress3.1.2の日本語版がリリースされたので、よいタイミングだった。もともとはルート直下の複数ディレクトリにそれぞれWordPressをインストールしてサイトを運営していた。今回はルートディレクトリに最新版WordPressをインストールし、サブディレクトリ型マルチサイトを構築すればよいと検討をつけた。インストールしたい階層が以前と異なるため、備え付けのアップデート機能は使わず自力で行う。

    1. 旧サイトのデータベースをバックアップ

      • phpMyAdminでmySQLのテーブルをエクスポートする。
        対象テーブルは、WP_USERS、WP_USERMETA、WP_OPTION以外のすべて
        オプションは、

        • エクスポートでSQL形式
        • オプションの構造で、
          • DROP TABLE / DROP VIEWを追加
          • AUTO_INCREMENT 値を追加する
          • テーブル名やフィールド名を逆クォートで囲む
        • オプションのデータで、
          • 完全な INSERT 文を作成する
          • 長い INSERT 文を作成する
          • 作成するクエリの最大長 50000
          • BLOBに16進数表記を利用する
          • エクスポート形式 INSERT
        • ファイルに保存する
        • エンコーディングnon

        もし投稿履歴があれば事前に削除しておくと、バックアップデータが小さくなる。
        DELETE FROM wp_posts WHERE post_type=’revision’

      • 添付ファイルをダウンロード
        /wp-content/uploads/以下すべてのファイルをFTPでダウンロードする。
    2. 旧サイトを削除
      サブディレクトリ型マルチサイトを作成する場合、同じディレクトリ名が物理的に存在してはならない。削除は怖いのでリネームしておく。

    3. WordPress3.1.2のインストール
      同じデータベース内に旧テーブル(例:WP_)を残しつつ、別の接頭辞(例:WW_)を指定してインストール。マルチサイト化しておく。

    4. データベースの移行
      旧ブログの記事を、新サイトの2つめのブログの記事として流し込む。

      • さきほどエクスポートしたSQLファイル内を書き換える
        • テーブル接頭辞のWP_をWW_2_に置換する。
        • 画像のパスを書き換える。
          /wp-content/uploads/ を、/files/ に置換すればよい。
      • phpMyAdminでSQLファイルをインポート
    5. 添付ファイルをアップロード
      アップロード先は、/wp-content/blogs.dir/2/files/
      例えば、
      http://example.com/example/files/2011/05/01/example.jpg
      というURLの画像ファイルがあった場合、
      ディレクトリ上では以下に配置すればよい。
      ↓↓↓
      /wp-content/blogs.dir/2/files/2011/05/01/example.jpg

    6. テーマやプラグインを設定
      WordPressの関数で変更、非推奨になった箇所があるため、自作のテーマやプラグインでエラーや警告が発生した。修正に半日を費やす。
      以前はできていたことができなくなった仕様もある。例えば、

      • URLにパラメータを持たせて処理していたページ、例えばパーマリンク?param=valueの場合valueに全角文字が使えなくなった。
      • 複数のカテゴリを持つ記事のパーマリンクが一意になった

      このように、以前なんとなくできていたことが明示的にできなくなっている。システム的な矛盾をなくすためと理解するものの、パーマリンクを変更せざるを得ないページも発生した。

  • MySQLを5.1にアップデート

    面倒でほったらかしになっていたサーバまわりのアップデートを、連休中に行った。WordPress3.0がリリースされてからほぼ1年になるので、かなりサボっていたことになる。業務ではもちろん3.0以上を使用していながらも、当ブログは2.8のままだった。というのも、WordPressをバージョンアップするには、さくらインターネットでMySQLのバージョンを4から5に上げねばならなかったからだ。MySQLはMovableTypeと併用していることもあり、手を付けるのに勇気を要した。連休の目標はMySQLとWordPressを最新版にすることと決めた。

    さくらインターネットでのMySQLのバージョンアップは以下のとおりだ。データが少ないためかなんのトラブルもなく、30分もかからずに終わった。

    1. phpMyAdminですべてのテーブルをエクスポートする。複数サイトを運営しているので、サイトごとに分けてエクスポートした。文字コード(UTF-8)に気をつけながら、念のためSQL形式のほかWordPress形式やMT形式でもバックアップを取っておく。
    2. phpMyAdminからいったんログアウトし、さくらのコントロールパネルでデータベースを削除する。やり直しがきかない作業なので、バックアップ内容の確認に念を入れてから行う。
    3. 新しいphpMyAdminにログインし、データベースをMySQL5.1で新規作成する。ここでデータベースのサーバ名とパスワードが変更された。
    4. データベースの照合順序をutf8_generalciに設定し、SQLファイルをインポートする。
    5. wp-config.phpやmt-config.cgiでデータベースのサーバ名とパスワードを修正
    6. ブログの表示を確認して完了