帰国してから早々と行ったのが WordPress のバージョンアップ作業でした。前のバージョンは確か 2.3.3 を使用していました。1 以前のバージョンでも私の場合は問題無かったのですが、ダッシュボードの大幅な変更や 500 以上にも及ぶ修正点 2 をダラダラと眺めてバージョンアップする事にしました
WordPress | 日本語 から、バージョン 2.5.1 日本語版をダウンロードし、解凍。私はローカルにもほぼ同じ環境を構築しているので、取り敢えずローカル環境にインストールしてみる事にしました
インストールは単に解凍したディレクトリ/ファイルをコピーするだけなんですが、私の場合は自分で修正したファイルが幾つかあるので、それをコピー、リネームして待避。そして、そのままコピーしてインストールは終了。アップグレードなので /wp-admin/upgrade.php にアクセスしてあっけなくアップグレード作業は終了
一通りの動作テストを済まし、レンタルサーバーの方もバージョンアップしようと、作業を開始する事に。開始の前に Maintenance Mode Plugin にてメインテナンスモードへ移行。そして、ローカルと同じようにインストール作業を行い、最後にアップグレードを作業を行う所でとんでもない事が発覚…
/wp-admin/upgrade.php にアクセスしてもメインテナンスモードに…('A`) ダッシュボードにアクセスしようにも、やはりメインテナンスモード…('A`) どうやら WordPress をインストールした所は全てメインテナンスモードになってしまったようです
しょうがないので phpMyAdmin にてデータベースを書き換えて、通常モードに変更して事なきを得ました。なんで、こんな事態に陥ってしまったかというと、メインテナンスモードプラグインの設定にアクセス許可設定を設定してなかった為に、全てのディレクトリ/ファイルにアクセスしてもメインテナンスモードになってしまったようです。アクセス許可設定を設定し、一通りの動作確認を行って全てのバージョンアップ作業は終了しました 3
当ブログで使用している WordPress のプラグイン Customizable Post Listings 1 の修正点
ローカルで構築した MySQL のバージョンだと、GROUP BY 句を指定していると正常に SELECT されないので、以下の様に修正$sql .= "GROUP BY $tableposts.ID ORDER BY $orderby $order";
$sql .= "ORDER BY $orderby $order";
上記の最初の if 文で $orderby 変数を置き換えてしまっているので、2番目の if 文では真とはなりません。なので、関数の最初で別変数に保持するように修正if ($orderby != 'rand()') $orderby = "$tableposts.post_$orderby";
・
・
・if ('modified' == $orderby) $sql .= "AND $tableposts.post_modified_gmt <= '$now' ";
$o = $orderby;
・
・
・if ('modified' == $o) $sql .= "AND $tableposts.post_modified_gmt <= '$now' ";
単に投稿日時と更新日時が同じでないレコードを抽出するように条件を加えただけif ('modified' == $o) $sql .= "AND $tableposts.post_modified_gmt <= '$now' AND $tableposts.post_date_gmt <> $tableposts.post_modified_gmt ";
WordPress の事 の記事で書いた問題が解決したので、その時行った対策を記事としておきます。結論から言うと、formatting.php を修正する事でほぼ解決。ソースの中を見ると解るように私にとっては余計な事をし過ぎている。修正した点は wptexturize, wpautop の 2つの関数。1 前者は一部の処理をコメントにし、後者は入力パラメーターを処理はせずにそのまま返す様に修正
前述の修正を施した WordPress を暫くの間、ローカル環境の WordPress でテストし、私が使用するもとでは問題ないと判断し、その時にテストしていたプラグイン 2 と一緒にサーバー側にも反映させました。最近の記事 (recent posts) と最近更新 (recent update) された記事のリストがそうです
話は変わって、WordPress はカスタマイズ性が抜群にいいのはいいのですが、如何せん、ドキュメントの不備が酷すぎます。今回の移転で私は初めて WordPress を触りました。所謂、WordPress 初心者です。実際にテンプレートを作製している時に感じたんですが、やりたいこと、実現したいことは解っているのですが、そこから目的の情報に辿り着くまでが時間かかり過ぎました。ひとえに逆引きやチュートリアルといった情報を掲載しているサイトがないからです。これは、公式サイト、日本の WordPress 関連サイトでもそうでした
例を挙げると WordPress でテンプレートを作成するには テンプレートタグ(実体は PHP の関数) というものを使用します。で、公式サイトを閲覧していき、テンプレートタグのマニュアルページなるものを見つけましたが…こんなんじゃ初めて触る人には理解できません。テンプレートタグの要約すら記述していません('A`) 結局テンプレートタグ一つ一つのページを何ができるのかを知る為に見て回らなければなりません。一言要約を記述するだけでこの手間が省けるに…('A`) これらを日本語に翻訳したサイトもあるんですが、情報が古かったり、リソースを置いてる場所が不安定だったりと日本語での情報収集は断念しました
実際にテンプレートについて書いていこうかと思いましたが、ダラダラと長くなるので今回は此処までとします
標準の table 要素で行うカレンダーは気に入らないので PHP で自作しました。表示フォントはちょっとオサレに Georgia を使っています。Windows, Mac の人もオッケーだと思います
話はチョット変わって、此処のブログシステムの事ですが、フッターに表示している様に WordPress 1 を使用しています。先の記事で、記事の移行はあっさりと終ったと書きましたが、実はあの後に色々とありました…('A`)
ところが phpMyAdmin 2 にてデータベースの中身を除くと、ちゃんと div 要素としてデータに入っています…WordPress Japan のフォーラムを検索すると、こんな記事が…WordPress Japan :: トピックを表示 - 記事投稿でCSS....【エディタの不具合?仕様?】・・解決 と言う訳で、早速ダッシュボードのユーザー設定にて ビジュアルエディタを使用する のチェックを外して、この問題は解決
データベースの中は置き換わっていないので、表示する際のフィルターの問題でしょう。それにしても、此れは大きなお世話。この問題は解決していませんが、時間ある時に調べてみます
この要素の中に以下の文字が入っていると、表示の際に勝手に別の文字に置き換わってしまいます
これ、表示の際に復帰改行に変更しているんですが、文字コードで言うならば、0x0d 0x0a を出力している為、UA によっては br 要素と同じように復帰改行してしまう…
上記の 1番以外の問題は恐らく表示する際のフィルター問題でしょう。時間ある時にソースコードを追っかけて調べてみたいと思います。取り敢えず、今は文字参照やキャラクターエンティティを使用して回避しています。改行の問題も文章間に改行を入れないようにして回避しています。いずれも運用で回避できる問題ですが…