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.comのテーマ

12 04 2008


Creative Commons License photo credit: naokomc

WordPress MUの調査は続いています。

MUでユーザーに使ってもらう為のテーマを選ぶ為にいろいろ調べていると、以下のsubversion repositoryのパスが見つかりました。

http://svn.automattic.com/wpcom-themes/

wordpress.comで選べるテーマが全部ここに入ってるんです。
「これは、いいぞ」ってことで、早速checkoutして自分のテスト環境にインストールしてみました。

Read the rest of this entry »




WordPress MUのget_blog_listのナゾ

12 04 2008

WordPress MUのwp-includes/wpmu-functions.phpに、get_blog_list()という関数があります。

名前からすると「存在するブログの一覧を取得する」機能と判断できますね。
もちろん、ボクもそう思いました。

しかし、コードをみるとblogsテーブルからselectするSQL文の条件に「public=’1′」 というのが含まれています。

この「public」というフィールドは、通常のWordPressでもおなじみの管理画面における「プライバシー」の状態を指しています。

「プライバシー」は、 「このブログを、検索エンジン (Google、Sphere、Technorati など) とアーカイブサイトを含め、誰でも閲覧できるようにする」かどうかのフラグで、具体的にはheadタグ内にmetaタグのnofollow, noindexを記述するかどうかというモノです。

となると、get_blog_list()内で「public=’1′」でフィルタするってのはなんなんでしょうか?

ソースコードをgrepすると、get_blog_list()は同じwpmu-functions.phpにあるget_most_active_blogs()という関数からのみ呼ばれています。
(get_most_active_blogs()はどこからも呼ばれていない)

う~ん、ナゾは深まるばかりです。

一つだけいえるのは、blogの一覧が欲しければ自分でfetchするしかないってことです。
WordPress MUの「サイト管理 - ブログ」画面のblog一覧も、get_blog_list()は使ってないのですから。

P.S.
この前、Plugin ManagerというMU用のプラグインについて書きました。
Plugin Commanderという別のものも見てみたのですが、どちらも少し「足りない」ので、自分で書くことにしました。
完成したらここで公開しまっす。




WordPress MUのユーザーに関するまとめ

12 04 2008

MUをいじっていたら、どうも「ユーザー」にはどんな状態があって、なにが許されているのかについて混乱してしまったので、まとめてみました。
(概念上の話です。データベース上、どういう状態がありうるかはまた別の機会に)

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 »







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