GUIDはpermalinkぢゃない

13 04 2008


Creative Commons License photo credit: ocean.flynn

データベース上でいうと・・・wp_postsテーブルのguidフィールドの話です。
GUIDとしてpermalinkが入っている思うのは、ちょっとした勘違い・・・そうボクもさっきまで勘違いしていたんですがw

多分、正解は・・・

投稿作成時のpermalink構造で作られたpermalinkが入っている。
後にpermalink構造を変更しても・・・または、ホスト名を変更しても、既存投稿のGUIDは置き換えてくれない。

ということだと思います。
まあ、GUIDの本来の意味を考えると、必ず「正しい」permalinkが入っているなんて思うのは間違っているに決まっていますね。

ちなみに、permalinkが欲しければwp-include/link-template.phpのget_permalink()を使うのが正解です。
(WordPress MUの管理機能などを作りこんでいる場合にpermalinkが欲しければ、get_permalink()の前にswitch_to_blog()して、取得してから、restore_current_blog()する)




WordPress MUのkses.phpの問題

13 04 2008

WordPress MUには(WordPressも)、wp-include/kses.phpっていうHTMLフィルター機能が搭載されています。

例えばimgタグやaタグに指定されるURLの正当性をチェックしてくれたりする機能です。

MUで記事を書いていて、aタグのtitle属性に「ブログ」と日本語で書くと、「ロ」の字が文字化けしてしまうという問題にぶち当たりました。
コードを追っかけていくとksesフィルターが化かしていることがわかりました。

このままでは、Left Handle BLOGS全体の問題として残ってしまうので、修正を試みたわけですが・・・

WordPress日本語版作成チームのGoogle Groupsに問題が指摘されていました。
さらに、チームの方がWordPress本家にもレポートしてくれていて、おまけにpatchも作ってくれています(要は、hrefやsrcのデータはフィルタするけど、altやtitle属性はフィルタしないという修正)。

早速、そのパッチをkses.phpに当てて、いろいろ試してみたところなかなかいい具合です。
大きいコミュニティのメリットを感じました。

Left Handle BLOGSにも早速採用です。

ちなみに、WordPress 2.3.3のkses.phpはMUとバージョンが違う為か、「ロ」問題はなかったです。
ただ、「ロ」だけが問題じゃなくて他の文字(エンコード)でも起こり得る話なので、対応したほうがいいと思います。
(WordPress 2.5のkses.phpは見てません)




WordPressのプラグインの実装でやるな!と思ったこと

12 04 2008

Week 6/26
Creative Commons License photo credit: iDip

NextGEN Galleryという画像ギャラリーのプラグインをいじっててわかったのですが、オプション設定を各ページor投稿の「カスタムフィールド」で上書きできる実装になってました。

ページや記事ごとに、表示オプションをカスタマイズできるというわけです。
この実装は良い感じですね。プラグインつくるときはパクリます。




WordPressのTinyMCEがdivをpに変換する問題

12 04 2008

WordPress
Creative Commons License photo credit: Alex and Rob

いろんなところで書かれてますが、WordPressのビジュアルエディタ「TinyMCE」を使用して、コードの画面でゴリゴリとdiv要素を書いても、気が付いたら自動的にp要素に置き換えられてしまいます。

実に見事な余計なお世話だなとは思うのですが、サポートフォーラムでの回答によると、

<div> tags replaced by <p> How do I make it stick?

Since the DIV tag is considered more as layout markup the developers convert it to a paragraph to be more writer / semantic friendly.

と、divは主にレイアウトに使用するもので、コンテンツ中ではpを使うのが文章の書き手にも意味的にも優しいという考え方の元に決められた仕様だということですので、バグというには少し言い過ぎですね。

確かに「div厨」なんて言われ様があるくらい、困ったときはとりあえずdivを使う傾向ってのがあるので、コンテンツの中身ぐらいdiv無しで行こうぜって考え方には同意できますが、昔書いた記事のdivを全部pに書き換えろなんてのはカンベンして欲しいわけです。

この問題に嵌った人は決まって、wp-includes/js/tinymce/tiny_mce_config.phpの
$valid_elements = ‘p/-div[*],-strong/-b[*],-em/-i[*],-font[*],-ul[*],-ol[*],-li[*],*[*]’;


$valid_elements = ‘p[*],-div[*],-strong/-b[*],-em/-i[*],-font[*],-ul[*],-ol[*],-li[*],*[*]’;

なんて変更して回避してるんですが(もちろん僕もです)、これってアップグレードで上書きされて戻ちゃったりすると、そのときにはきっと忘れてるんで、さらなる悪夢に陥るハメに・・・

で、上の回答を書いた人がつくってる「WP Super Edit」というプラグインは、ソースコードを勝手に変更しないというポリシーでつくってるみたいなので、試してみる価値がありそうだぜ!




XCache for WordPressでトラブル

12 04 2008

Wordpress bag
Creative Commons License photo credit: tyfn

PHPのcacherをAPCからXCacheに変えたついでに、XCache for WordPressを入れてみたんですが、微妙なトラブルが発生。

管理画面で投稿記事を編集して、「保存して編集を続ける」を押すと、変更内容がリセットされちゃいます。

これは明らかにキャッシュが残っててクリアできてない・・・

どうやら「WordPress チューニング (Rauru Blog)」を見てその気になって、get_posts()の中にキャッシュに入れるコードを追加してたのが原因だったようで、そこを削除したら直りました。
しかし、別にそこでキャッシュするのは悪いことじゃないので、edit時にキャッシュ更新orクリアをしてやるべきですね。
まあ、あんまり勝手にいじるのは良くないなってことで、戻しておくことにしました。

しかしこのあたりのコード、あまりにも気になるのでsvn trunkのを見たのですが、かなり書き直されてるので2.5に期待しときます。




All in One Adsense and YPNの修正

12 04 2008

Las orejillas del imperio
Creative Commons License photo credit: kurtxio

このブログにAll in One Adsense and YPNというプラグインでAdSense広告を挿入してみたところ、文字化けすると思ったら、なんだか文字列置換のところがテキトーになってたので、テキセツに直した
Read the rest of this entry »




WordPressのtable_prefix変更

12 04 2008

Wordpressのwp-config.phpで設定する $table_prefix ですが、これを運用途中で変更すると管理画面にログインできなくなる可能性があります。
Read the rest of this entry »




WordpressのjQueryをVer.1.2.3にアップグレードする

12 04 2008


Creative Commons License photo credit: miss604

Wordpress 2.3.3に載っているjQueryはバージョン1.1.4です。 どーしても、WordpressでjQuery.UI 1.5が使いたい・・・そんな時は1.1.4ではちょと古すぎるので、jQueryも最新の1.2.3にアップグレードします。

  • jQuery1.2.3をダウンロード(ボクはmin.jsをダウンロードしました)
  • /wp-includes/js/jqueryにjquery.jsとしてコピー(元の1.1.4は一応バックアップ)
  • コピーしたjquery.jsをエディタで開いて、最後の行に
    jQuery.noConflict();
    を追加
  • ついでにjQuery Form Pluginも新しくする為にダウンロード(jquery.jsをコピーした時に「あ、formもあったよ」と気付いたというのが実情w)
  • /wp-includes/script-loader.php Line75/76のバージョン番号をそれぞれ1.2.3/2.0.4に変更(これをしないとブラウザキャッシュを更新できないよね)

以上の作業を実施した後、まずはwp-adminの動きをチェックしました。
どうやらFirebugのConsoleにはエラーは表示されず、どのページも動いています。

さて、ここでjQuery.UI1.5をブログで使う設定をします。

/wp-content/themes/{自分の使っているテーマ}/header.phpのheadタグの中に

wp_enqueue_script("jqueryui","{jQuery.UIファイルへのpath}");

というPHPコードを埋め込みます。
使いたいjsファイル分書くことになりますね(ボクはui.tabs.jsのみ追加)。

同様に独自のJavaScriptコードを含んだjsファイルも読み込むように設定し、ブログをロードしてみると、しっかりjQuery.UIによるタブが構成されています。

Wordpressに載っているJavaScriptフレームワークは、昔prototype.jsで、最近jQueryに変わったという経緯があります。
wp-adminではまだprototype.jsが使われていたりと、この辺はまだ開発チームも試行錯誤中かもしれません。
上記のようにjQueryをアップグレードして、jQuery.UIなどのjQuery Pluginを設定しても、今後ずっとこうやれば動くというわけではないかもしれません。
注意深くその都度チェックするのが・・・ボクが一番キライなことですが(w・・・必要ですね。

P.S. 写真のオネーチャンは、「やらされている」のか?「率先してやっている」のか?ナゾはふかまるばかりです(w




WordpressとMUのデータベースの違い

12 04 2008


Creative Commons License photo credit: Alex and Rob

仕事関係で「ネタ蔵のネタ」でもお世話になっているWordpressの中身を研究しています。

今日はWordpressとそのマルチユーザー版Wordpress MUのデータベースの構造をチェック。
インストールして少し使ってみてから、mysqldumpで両方のデータベースをdumpして比べてみました。

Read the rest of this entry »




del.icio.usのdaily blog postingを試す

12 04 2008

del.icio.usにブックマークしたエントリをリストするウィジェットがないかいろいろ見てたら、del.icio.usの 「del.icio.us / settings / blogging」に「daily blog posting」という機能があることに気付きました。

サポートしているブログエンジンなら、過去24時間でブックマークしたエントリのリストを、毎日決まった時間に自動的に記事としてPOSTしてくれるというものです。

サポートしてるブログエンジンには

  • wordpress(ネタ蔵のネタはこれ)
  • Movable Type
  • Typepad

が明記されていますが、多分xmlrpcをサポートしているのなら使えるはずです。

利用方法は、「daily blog posting」のページに行って、

  1. 「add a new thingy」 をクリック(フォームが表示される)
  2. 「job_name」に適当な名前(なんでもよさそう)
  3. 「out_name」にブログのログインID
  4. 「out_pass」にブログのパスワード
  5. 「out_url」にxmlrpcのクチへのURL(wordpressならhttp://{your domain}/xmlrpc.php)
  6. 「out_time」に自動ポストされたい時刻のhour部分(GMTな0から23の数字。日本は+9ですぞ)
  7. 「out_blog_id」にブログID・・・wordpress日本語版やMEなら「1」かな?MUなら割り振られているブログID
  8. 「out_cat_id」に自動POSTされる記事のカテゴリID(管理コンソールでカテゴリ作った時に割り振られるIDね)

という具合に設定&保存すれば・・・OKなはず。

ネタ蔵のネタでは毎日正午に自動ポストされるように設定してみました。
第1発目は明日です。
どんな感じでポストされるのかドキドキしながら待ちましょう。







EURO FOOTBALL JUNCTION | 京都情報ジャンクション | Geoタグつけまっしょい