WordPress ハックは Yuriko.Net メインサイトで

2007年2月14日より、WordPress ハック関連は Yuriko.Net メインサイトの「WordPress ハックカテゴリー」にて執筆しています。検索エンジン等でこのカテゴリーを見つけられた場合は、ぜひとも Yuriko.Net メインサイトもご覧ください。

その後もこのカテゴリーを使っていますが、それは、このサイト自身に対するハックや、自作プラグインの動作テストとなっています。

あと、言うまでもないことですが、「ハック」は悪い行為の意味ではなく、高度なプログラミングをする、の意味です。

2008-09-23
晴れ

いよいよ開場

yuriko(d) による 12:32:37 の投稿
カテゴリー: WordPressハック, 首都圏日帰り
タグ:
200809231224000 200809231222000

いよいよ開場です。ぼちぼちとお客さんが来られています。

スタバで準備ちう

yuriko(d) による 09:25:24 の投稿
カテゴリー: WordPressハック, 首都圏日帰り
タグ:
200809230901000

文化村近くのスターバックスで準備というか世間話しています。下っぱメンバーばかりしか来てないよ〰。

2008-04-01
くもり

エイプリルフールは携帯電話で開催

yuriko による 00:05:07 の投稿
カテゴリー: WordPressハック
タグ: , ,

当サイトのエイプリルフールは携帯電話のみの開催となっております。あしからずご了承ください。

[追記] PC でも同じ動作が可能なので、実施してみました ;-)

[追記 2008-04-03] エイプリルフール企画は、お楽しみ頂けましたでしょうか。どんな URL にアクセスしても「ランダムに記事が表示される」というもので、かなりびっくりされたかと思います。しかも、その動作を実現するプラグインも公開していました ;-)

2008-03-19

WAVY DASH 使ってみた

yuriko による 02:42:23 の投稿
カテゴリー: WordPressハック, サイト更新情報
タグ: ,

リアルタイムレポート時に波ダッシュ「〜」をよく使っていますが、波ダッシュを2つ続けたら「〰」() に変換されるようにしてみました。携帯電話で見たときも実は対応していて、iモード, WILLCOM, EMOBILE には を示す絵文字 (165番) に変換されます。EZweb, SoftBank は対応する絵文字がないので、波ダッシュ2つのまま「〜〜」になります。

この対応は拙作のプラグイン「Force Wave Dash」で行なっていますが、テストが良好ならば、一般公開してみる予定です。

余談ですが、Windows Mobile スマートフォンでは「〜」(WAVE DASH) が文字化けしてしまい、Force Wave Dash を使うと表示がイマイチになってしまいます。Windows Mobile のときだけ「~」(FULLWIDTH TILDE) に変換させる機能 (Force Fullwidth Tilde 機能) を入れた方がいいのかも。

2008-03-09

携帯電話でも地図表示可能

yuriko による 20:34:26 の投稿
カテゴリー: WordPressハック, サイト更新情報
タグ: ,

Google Static Maps API を利用して、携帯電話でも地図が出るようにしました。まだコードが汚なくてめちゃくちゃなので公開はできませんが、ヒマを見つけて Lightweight Google Maps のバージョンアップをしたいと思います。

2007-09-25

WordPress のスマイリー一覧

yuriko による 22:50:22 の投稿
カテゴリー: WordPressハック

携帯電話閲覧プラグインのテスト用に、WordPress 内蔵のスマイリー一覧を並べておきます。当然テスト用サイトは別に作ってありますが、Basic 認証をかけてあるために、Basic 認証非対応の Vodafone 改め SoftBank 端末からは確認できないのです;-)

:smile:→ :smile: icon_smile.gif
:grin:→ :grin: icon_biggrin.gif
:sad:→ :sad: icon_sad.gif
:eek:→ :eek: icon_surprised.gif
:shock:→ :shock: icon_eek.gif
:???:→ :???: icon_confused.gif
:cool:→ :cool: icon_cool.gif
:mad:→ :mad: icon_mad.gif
:razz:→ :razz: icon_razz.gif
:neutral:→ :neutral: icon_neutral.gif
:wink:→ :wink: icon_wink.gif
:lol:→ :lol: icon_lol.gif
:oops:→ :oops: icon_redface.gif
:cry:→ :cry: icon_cry.gif
:evil:→ :evil: icon_evil.gif
:twisted:→ :twisted: icon_twisted.gif
:roll:→ :roll: icon_rolleyes.gif
:!:→ :!: icon_exclaim.gif
:?:→ :?: icon_question.gif
:idea:→ :idea: icon_idea.gif
:arrow:→ :arrow: icon_arrow.gif
:mrgreen:→ :mrgreen: icon_mrgreen.gif
2007-06-23
晴れ

十六夜

yuriko(a) による 22:21:46 の投稿
カテゴリー: WordPressハック
070623_2215~0001.jpg

特別にWordpressハックカテゴリーにします。元町駅近くに「十六夜」という居酒屋がありました。いやはや。

[GPS情報URL]
HTTP://walk.eznavi.jp/map/?datum=0&unit=0&lat=%2b34.41.31.05&lon=%2b135.11.14.41&fm=0
2007-05-16
晴れ

カスタム 404 ページの脆弱性

yuriko による 11:37:03 の投稿
カテゴリー: WordPressハック

CVE-2007-2627 の対策として、カスタム 404 ページのテンプレートから get_sidebar() 関数を除去しました。そのままではレイアウトが崩れてしまったので、適宜 <div id="sidebar"> </div> などの記述を足しています。(追記: この修正は意味がないので記述削除)

脆弱性の概要は以下の通りです。WordPress 2.2 では修正されるのかな??(WP2.1 の時点で OK でした)

Overview

Cross-site scripting (XSS) vulnerability in sidebar.php in WordPress, when custom 404 pages that call get_sidebar are used, allows remote attackers to inject arbitrary web script or HTML via the query string (PHP_SELF), a different vulnerability than CVE-2007-1622.

[追記 20:45] 本日、WordPress 2.2 本家版がリリースされましたが、どうも直ってなさそうです。template-loader.php, theme.php を見ても 404.php を読み込む処理に手が入ってるように見えませんから。

[追記 21:40] これは WordPress コアの脆弱性じゃなくて、テーマの作り方によって脆弱性が起きるという話でした (なのでタイトルと記述を大幅修正)。詳細によると、WordPress の sidebar.php にある検索フォームが <form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>"> となっているからヤバイ、というものです。でも、WordPress 2.1 に同梱されているテーマは、もはやそんな記述になっていません。classic, default ともに <form id="searchform" method="get" action="<?php bloginfo('home'); ?>"> となっていて安全です (WordPress 2.2 の default テーマは action="<?php bloginfo('url');?>" に修正されています)。しかし、ME 版附属の EasyAll はモロ $_SERVER['PHP_SELF']; を使っていて危険です!! WordPress 2.2 ME 版ではぜひ直してもらわないと……。

なお、当サイトのテーマは PHP_SELF を使っていないので、最初に投稿した修正は不要でした。

2007-04-13
晴れ

WordPress インストール先をウェブログ URL から分離

yuriko による 00:18:09 の投稿
カテゴリー: WordPressハック

このたび、WordPress のインストール先アドレスをウェブログ URL から分離しました。具体的に書くと、ウェブログ URL (http://www.yuriko.net/travel/) はそのままにして、WordPress のインストール先アドレスを別のものにしたのです。

通常は、インストールが簡単になるため両者を同じにしますが、先月から運用しているサイトは両者を別にしているためか、スパムがまるで来ません。この場合、wp-comments-post.php を直に叩くスパム投稿ができないからでしょう。

ということで、当サイトでも分離してみることにしました。分離先はベタですが /wordpress/ とします。ウェブログの URL は変えてはいけませんからそのままです。いわば、WordPress を /wordpress/ にインストールしつつ、ウェブログの URL は /travel/ としたのと同じことになります。

  1. まず、WordPress のインストール先を変更します。シェルまたは FTP クライアントで、/home/ほげほげ/public_html/travel/ ディレクトリーを /home/ほげほげ/public_html/wordpress/ に名称変更します。
  2. 次に、phpMyAdmin 等で、wp_options テーブルの siteurl は http://www.yuriko.net/travel から末尾だけ /wordpress に変更します (上記の変更でもはや WordPress にログインできないので管理画面での変更は無理)。
  3. さらに、.htaccess の RewriteRule . /travel/index.php [L] の travel を wordpress にします ( .htaccess は /home/ほげほげ/public_html/ にまとめてるので、これでOK)
  4. 最後に、アップロードした写真の URL を修正するために、データーベースをダンプして、テキストエディター で /travel/wp-content/ という文字列を /wordpress/wp-content/ に置換し、その内容をデーターベースに戻しました。

実際の作業は少し違いますが、だいたいこんな流れでできました。最後のデーターベース変更を省略して .htaccess に以下のような行を追加する手もありますが、Apache に負荷がかかるために避けました。

RewriteRule ^/travel/wp-content/(.*) /wordpress/wp-content/$1 [L]

他のサイトだと、http://example.jp/ がウェブログ URL とすれば、WordPress インストール先を http://example.jp/wordpress/ にする手が有効でしょう。この場合は、wordpress/ ディレクトリー内の .htaccess と index.php だけをルートレベルに移動させて、中身を require('wordpress/wp-blog-header.php'); を修正しないといけません。

[追記 2007-04-13 15:45] せっかくの改造も効果なく、スパムが多数着信します。当サイトに来るのはトラックバックスパムが多数のようです。これは Yuriko.Net メインサイトのように、トラックバック用 URI をランダム文字列にする改造が必要なようです。プラグインを開発するしか!!

2007-03-01
晴れ

ウェブログをブラッシュアップ

yuriko による 23:58:45 の投稿
カテゴリー: WordPressハック

WordPress ME 2.1.1 にするとき、データーベースの内容を書き出してから phpMyAdmin でインポートしました。このとき、いろいろと内容をブラッシュアップしておきました。

  • リンクカテゴリーが廃止になってカテゴリーに統一されたので、カテゴリー ID を振り直した。
  • 初期の記事で「GPS情報URL」が見えていたものをすべて隠すようにした。
  • パーマリンク体系を変更して、記事 ID のかわりに投稿スラッグを URL に含めるようにした。過去の記事については、投稿スラッグとして「記事 ID」を割り当てて、見かけ上の URL はそのままとした。

もともと「記事 ID を URL に含める」のはあまり好きではなかったのですが、リアルタイム旅行レポートでは、いちいち投稿スラッグを指定するわけにいかず、仕方なく採用したものです。モブログ投稿時は、投稿スラッグとして時刻を埋め込むことにしたので、ウェブログ運営当初の目論み通り、投稿スラッグを使ったパーマリンクに戻します。

2007-02-14
雨

WordPress ハックは Yuriko.Net メインサイトで

yuriko による 22:20:34 の投稿
カテゴリー: WordPressハック, サイト更新情報

ウェブサイトの運営方針を変更しまして、WordPress ハック関連は Yuriko.Net メインサイトの WordPress ハックカテゴリーで執筆することとします。当サイトは、リアルタイム旅行レポートと、鉄道・航空・バス関連のネタに絞ることにします。

Yuriko.Net メインサイトは独自ウェブログシステムでの運営なので、WordPress じゃないシステムで WordPress ネタをやることになりますが、それも一興ということで。

2007-02-13

Ktai Location 0.9.1 と Lightweight Google Maps 0.9.8.1 リリース

yuriko による 22:01:17 の投稿
カテゴリー: WordPressハック

さきほど、Ktai Location 0.9.1 と、Lightweight Google Maps 0.9.8.1 をリリースいたしました。ダウンロードはそれぞれの配布サイトから行えます。[追記] 0.9.8 はバグがあったので、一旦ひっこめて、0.9.8.1 として出し直しました。

変更内容については配布サイトにも書いてありますが、抜き出してみると以下の通りです。見ての通り、Google マッププラグインは大幅な変更となっているので、バグや不具合が残っている可能性があります。それを承知の上でご利用ください。特に、ウェブログの文字コードが UTF-8 でない場合は動作があやしい可能性があります。EUC-JP だと問題は少ないでしょうが Shift_JIS については全く保証しません。将来的には、明示的にサポート外とするかも;-)

Ktai Location
S! GPS において NAVITIME の URL を送出する機種にも対応しました。
Lightweight Google Maps
固定の地図ページでは、位置情報マーカーの取り込みを Ajax 的な非同期な動作に変更しました。
各記事のミニサイズ地図、およびミニサイズ地図からマーカーをクリックして表示される場所指定地図の拡大率を管理画面で指定できるようにしました。
場所指定地図でにおける位置情報マーカーは、地図が見えている範囲ぎりぎりだけを抽出するようにしました (以前のバージョンでは、抽出する範囲の決定がアドホックな不正確な方法でした)。
固定の地図ページでカテゴリー指定したときの拡大率は、すべての位置情報マーカーが入るような値を自動調整するようにしました。

どちらのバージョンも、だいぶ不具合のあぶり出しができてきたので、いよいよバージョン1.0.0 という正式版をリリースしたいところです。でも、Ktai Location はドコモ GPS でテストするまでは無理ですし、Google マッププラグインは EUC-JP ウェブログでの動作報告が欲しいところ。みなさん、ご協力をお願いいたします。

[追記] ああ、Google マッププラグインは、本家版 WordPress だと日本語ローカライズを有効にするのにコツがいるとか K2 テーマでうまく動かないということをドキュメントに書き漏らしてしまいました。配布サイトには追記しておきましょう。

2007-02-12
晴れ

Softbank GPS 情報

yuriko による 17:00:30 の投稿
カテゴリー: WordPressハック

南新宿駅からは、ソフトバンク原宿に行ったのですが、そこで Softbank 910T901T の実機があったので GPS URL を確認しました。さて、ちゃんと解釈されるか。

地図表示: http://map.navitime.jp?pos=N35.40.7.71E139.42.13.75&x-acr=1&geo=wgs84

[追記] 残念ながら、位置情報が読まれませんでした。そもそも URL として不正っぽいですから解析失敗して当然です;-)

[さらに追記] 901T じゃなくて910Tだったので訂正。

2007-02-11

WordPress 2.1 でのプラグイン動作状況

yuriko による 13:25:08 の投稿
カテゴリー: WordPressハック

WordPress 2.1 本家版のテスト環境を作ったので、拙作のプラグインの動作状況を確認してみました。

Ktai Location
おそらく正常動作
KtaiLoc2otenki
おそらく正常動作
Lightweight Google Maps
おそらく正常動作
wp-mta
おそらく正常動作

最初、Lightweight Google Maps で日本語ローカライズが動きませんでした。しかし、これは WordPress 2.1 の日本語リソースが ja.mo という指定だったため、WP_LANG を ja_UTF → ja と変更したためでした。これにより、Lightweight Google Maps の日本語リソースが認識されなかったのです。WP_LANG を ja_UTF に戻し、日本語リソースのファイル名も ja_UTF.mo に変更するとローカライズが有効になりました。

2.0 → 2.1 の変更にひっかかるような作り方はしてなかったので大丈夫と思っていましたが、やはりその通りでした。なお、Lightweight Google Maps でカテゴリー絞り込みのポッポアップメニューを作る関数が、2.1 で deprecated になったので、WordPress 2.2 になったら動かなくなりそうです。要修正ですね。

WordPress 2.1 をお試し

yuriko による 01:51:25 の投稿
カテゴリー: WordPressハック
WordPress 2.1 ダッシュボード

なかなか ME 版2.1 が出てこないので、別途運用しているテスト用ウェブログを WordPress 2.1 本家版 + 2.1 日本語リソースにアップグレードしてみました (テスト用ウェブログはパスワード保護してあって非公開です)。日本語リソースの翻訳にはいくつか気にいらないところがありますが、いま poEdit を動かす環境が手元にないので、配付版そのままです;-)

なお、サーバーの MySQL は 5.0.x 系統ですが、インストール時に “SET NAMES utf8″ のクエリー発行するハックをしていなかったので、phpMyAdmin で見ると文字化けするという不便な状況でした。今回、この改善をするテストも兼ねています。

  1. ME 版 2.0.7 の状態で、管理→バックアップからデーターベースのバックアップを取る。
  2. バックアップされた sql ファイルを開き、DEFAULT CHASET=latin1 となっている部分すべてを DEFAULT CHARSET=utf8 に修正する。
  3. phpMyAdmin でウェブログのデーターベースを開き、既存テーブルをすべてリネームする (接頭辞を wp_ から old_ にする etc)。
  4. phpMyAdmin でさきほど修正した sql ファイルを読み込ませてインポートする。これで、正常な文字コードへの修正が完了。
  5. プラグインをすべて無効にする。
  6. WordPress 2.1 をダウンロードして展開する。
  7. wp-includes/wp-db.php を開き、65行目に以下のコードを挿入する ($this->select($dbname);の前)。
    mysql_query("SET NAMES utf8", $this->dbh);
  8. wp-includes フォルダーの中に languages フォルダーを作り、ja.mo ファイルを置く。
  9. 展開して修正を加えたファイルをサーバーに転送する (wp-content フォルダーは上書き転送しないこと!!)。ほぼすべてのファイルが更新されるはず。
  10. wpj-wizard.php は不要なので削除する。
  11. サーバー上の wp-config.php において、WP_LANG を修正する。
    define ('WPLANG', 'ja');
  12. あとは、wp-admin/upgrade.php を実行させれば OK (のはず)

ウチではほぼ上の手順で問題ありませんでした。本家版を使うのは初めてですが、だいぶ雰囲気が違いますね〰。やはりダッシュボードには文字化けがあるし……。

これで、プラグインのテスト環境として ME 版2.0.7 の他に 本家版2.1も揃いました。EUC-JP 版のテスト用ウェブログ (これは ME 2.0.7) も用意したので、これで十分でしょう……。

2007-02-10
晴れ

サイトデザイン微調整

yuriko による 22:36:40 の投稿
カテゴリー: WordPressハック, サイト更新情報

すでにお気付きと思いますが、サイトデザインを微調整しました。

  • タイトル部分に、サイト説明を追加 (説明文章自体も変更)
  • メイン部分と右側サイドバーの区切り線を、サイドバー側に付与

前者は、リアルタイム旅行レポートだけの予定だった当サイトが、WordPress ハックの内容が多くなっている現状を追認するためです。後者は、以前の状態 (区切り線は本文の長さに追随する) では、サイドバーが多いときに、不自然に見えてしまうことを解消するためです。逆に、本文の方が多くなると区切り線がページ末尾まで伸びませんが、そんなに不自然に見えません。

もし、サイドバーが左側にあれば、本文側に区切り線をつけた方が自然でしょうね。

内部的には、スタイルシートを2つに分けて、media=”all” な部分と media=”screen,projection,tv,print” な部分に分離するという大手術をしています。これにより、Opera のスモールスクリーンモード (media=”handheld” を参照) でも背景色などが付いて見えるようになりました。