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

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

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

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

2006-12-21
くもり

Plug ‘n’ Play Google Map を調整

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

またまた Plug ‘n’ Play Google Map プラグインの調整を行いました。まずは、すべてのポイントで日付が出るようバグ修正と、本文の要約を表示させる機能追加です。

このプラグインは、各ページのサムネール画像を表示させる機能がありますが、サムネール画像を作るのはちょっと面倒なことと、テキスト情報もあった方がよかろうということで、今回の修正となりました。

330行〜359行付近を以下のように修正します。yf_createMarker() 関数を修正して、excerpt 引数を追加するのと、その関数を呼び出す部分では、要約の最初の行を excerpt 引数として渡します。また、the_date() 関数をやめて get_the_time() 関数を使うことで、必ず日付がでるようにします。

(続きを見る…)

2006-12-19

また地図見えてない→修正ずみ

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

実は昨日の夜から気がついていましたが、地図ページで Googlemap が表示されていません。また PHP のメモリー不足でエラーになっているのかと思って、メモリー使用量を 32MB に増量してみましたが、それでも解決しません。

やはり、すべてのポイントを打つというのが無茶なので、早い目に「直近100個だけ打つ」というハックを行う予定です。しばらく地図が出なくてご迷惑をおかけしますが、ご了承ください。

その後、「特定カテゴリーでソートしてプロット」「地図が表示されている範囲だけピン打ち」というハックも検討しています。後者は、日本全図を出してしまうと全部打つのと同じになってしまいますから、拡大率が低いときはうまく間引くようなアルゴリズムが必要ですね。

[追記 2006-12-20 20:05] 地図が見えない原因は、先日行なったテンプレートの変更でした。Plug ‘n’ Play Google Map Plugin を使うには、テンプレートに <?php wp_footer(); ?> を書いておかないといけませんが、それが抜けていたのです。いやはや、情けない原因や〜〜。

2006-12-17
くもり時々雨

wp-mta ベータ版 0.20

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

wp-shot v0.1 リリースに触発されまして、大幅修正中の wp-mta を未完成ながら公開してしまいます。これは、ウチで使っているモブログ投稿スクリプトで、メールサーバーに届いたタイミングで投稿処理が行なわれる仕組みを採用しています。他のスクリプトのように POP3 でメールを読みに行くものとは全く動作原理が異なります。

現在、WordPress コアの修正が必要であることと、まだテストが不十分なので、実戦投入は避けてください。むしろ、wp-shot に対するコードの貢献が目的です。

現在、ドキュメントはまったく附属していません。概要・設置方法については前バージョンのリリース案内を参照してください。

コードを見てもらうと分かりますが、メールアドレスの抽出部分はかなり独特の方法ですが、相当変なアドレスでも判別可能です。メールアドレスにコンマ(,)を含んでも大丈夫なのはすごいところです。ただし、かっこの扱い (メールアドレスにおけるかっこはコメントを意味します) が RFC2822 には厳密に準拠しておらず、少しバグがあります。例えば From: hoge(comment)hoge@example.jp という From フィールドの記述は不正ですが hogehoge@example.jp として抽出してしまいます。ちなみに、From: hoge(comment)@example.jp という記述ならば正当で、hoge@example.jp というメールアドレスを意味します。

かっこが入れ子になっているときも挙動不審です。

2006-12-15
くもり

デザイン微調整

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

数日前から、当サイトのデザインを微調整しています。見た目としては、一番上の画像を少し小さくした (縦幅200px にした) とか、背景の灰色を明る目にした、サイドバーの箇条書き項目に三角をつけたなどです。

しかし、見た目とはうらはらに、内部的にはだいぶいじっています。テンプレートファイルを大幅に書き直して、EasyAll みたいに、ヘッダーとサイドバーを別ファイルにしました。そして、ヘッダーでは、title タグが meta タグ (による文字コード指定) より先になっていた重大な問題を直しました。スタイルシートもだいぶいじっており、id 名や class 名も変更しています。すでに報告したように、本文を先に記述してサイドバーを後に掲載してもいます。

この結果、もはや、他人のテーマファイルを修正したとは言えない状況 (一から書き直したに近い状況) なので、モトとなったテーマファイルのクレジットを削除しました。厳密にはまずいと思いますが、事実上は問題ないでしょう。他人に再配布するとなれば、厳密な調査が必要でしょうが、自分で使うだけなら多少ええ加減でもいいはず;-)

いちおう、Firefox 2, Safari, Windows IE 6 等で表示確認していますが、もし問題があれば、ご報告をお願いいたします。

2006-12-14
くもり

wp_insert_post() 関数修正

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

wp-mta を全面的に書き換えていますが、div タグや br タグに付与した class 属性が消えてしまうという問題がありました。どうやら、wp-includes/functions-post.php にある wp_insert_post() 関数で apply_filters('content_save_pre', $post_content); を実行した段階で消されるようです。

このフィルターは wp-includes/default-filters.php にて、wp-includes/functions-formatting.php にある balanceTags() 関数が呼ばれるように定義されています。

そこで、このフィルターが実行されないように、remove_filter()balanceTags の呼び出しをやめるようにしてみましたが、これは失敗しました。仕方なく、wp-includes/functions-post.php をいじって apply_filters('content_save_pre', $post_content); のある行をコメントアウトしてしまいました;-) これで、意図通りの動きをするようになりました。

ところが、wp_insert_post() 関数は XMLRPC 経由で投稿するときも呼ばれるわけで、ウェブログクライアントソフトで投稿するときも、div タグに設定した class 属性が消えるんでしょうか……。もし消えるなら、クライアントソフトは使えないということになりますし、消えないなら、XMLRPC 経由での投稿処理を解析することで、メール投稿でも class 属性を消さないようにできますね。

でも、WordPress コア (functions-post.php) をいじる必要があるなら、wp-mta の新バージョンはリリースできないよぉ〜〜。どうにかしてコアはそのままでいい方法を見付けないと。

玉葱安売り

yuriko(v) による 02:27:33 の投稿
カテゴリー: WordPressハック,地域情報
06-12-11_20-14.jpg

玉葱が1つ9円で安売りしています。
(wp-mtaテスト)

2006-12-12

テンプレート修正して XHTML での本文とサイドバーの順序入れ換え

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

当サイトのテンプレートおよびスタイルシートを大幅に変更して、XHTML において本文とサイドバーの順序を入れ換えました。以前は先にサイドバーの内容を出力していましたが、現在は本文が先に出てきます。

しかし、その都合でサイドバーを左側に置かざるを得なくなりました。本文において float: left; および clear:left; というスタイルを適用しまくっているので、本文全体をくるむ div タグに float:left; を適用しても、サイドバー部分では効かず、本文に廻り込まずに下に落ちてしまいます。仕方なく、本文では使っていない float:right; を使ってサイドバーを本文全体に対して廻り込ませました。このため、サイドバーが左側に来ることになりました。もっとうまくテンプレートおよびスタイルシートをハックできれば、以前のように、サイドバーを右側に持って来れると思うので、機会を見てがんばってみます。サイドバー自体の左側マージンを本文領域の幅にしてしまえば、うまく廻り込むことが分かったので以前のデザインにしました。具体的には #sidebar {margin:0 15px 0 600px;}という感じです。

Plug ‘n’ Play Google Map の XHTML 文法違反を修正

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

情けないことに今ごろ気がつきましたが、Plug ‘n’ Play Google Map Plugin を入れると XHTML の文法違反が発生するようです。具体的には、「Map View」のアイコンが表示されたとき、a タグの href 属性 (リンク先 URL) にある & 文字を実体参照にせずそのまま & と記述しているのがよくありません。

そこでプラグインの276行目を以下のように修正してみました。これで文法違反は解消された模様です。

echo '<p><a class="googlemap_button" href="'.get_bloginfo('url')
.'/'.get_option('yf_google_page_id').'/?lat='.get_Lat().
'&amp;long='.get_Lon().'"><img src="'.get_settings('siteurl').
'/wp-content/plugins/plug-n-play-google-map/googlemap_button.gif" 
alt="click to view on my google map" style="border: none;" /></a></p>';
2006-12-08
晴れ

ミスドのL

yuriko(v) による 01:20:15 の投稿
カテゴリー: WordPressハック,食べ物
タグ:

ミスドのLを売っています。さすがに近所に深夜営業しているミスドはないので、実はテスト投稿です。

[追記] あれえ。div タグや br タグの class 属性が抜けてしまっています。これじゃあダメですね。

てすと

yuriko(a) による 00:55:50 の投稿
カテゴリー: WordPressハック

文章だけのてすと。

[追記] これは問題ないようです。