プログラミング」タグアーカイブ

WordPress の更新情報を JSONP 形式で出力

さて、昨日のエントリの続き。
「Googlle AJAX Feed API なんて外部のサービスに依存したくないんじゃ!」という人のために、昨日と同様のことを自前で行うための方法。

WordPress の更新情報を JavaScript で取得して表示するには AJAX と呼ばれる技術を使います。
しかし、http を通してデータを読み込むための XMLHttpRequest では、制限として別ドメインのデータを読み込むことができません
これを回避する方法が JSONP です。
hiromasa さんが、昨日のエントリにトラックバックしてくれた静的 HTML に WordPress を埋め込む方法を用いて JSONP 形式で、WordPress の最新記事を取得してみましょう。
続きを読む

Google AJAX Feed API

@pureminami's tweetみなみさんが静的ページに WordPress の新着記事一覧を表示する方法を急募していた。
これを実現するために JavaScript で RSS フィードを取得して表示する方法を調べたので、自分用にメモ。
使用するのは Google AJAX Feed API
Google AJAX Feed API を使用するには、APIキーが必要。
Google Map を利用する際に取得した API キーがあれば使えるが、無ければGoogle AJAX Feed API への登録をしておこう。
続きを読む

適切なフィルタフックを探す

WordPress では、アクションまたはフィルタをフックして、WordPress 本体の処理結果や方法をプラグインで変更することができます。
( see. プラグイン API – WordPress Codex 日本語版 )

自動で何かをする系のプラグインを開発する際は、まずどのアクションフック or フィルタフックが使えるのかを調査することから始めます。
codex のプラグイン API/アクションフック一覧, フィルターフック一覧から探すのが一般的だと思いますが、私の場合は WordPress のソースから使えそうなアクションフック・フィルタフックを探します。
この辺のノウハウってあまり文章化されていないようなので、私のやり方を簡単にまとめておきます。
続きを読む

各種フィード用テンプレートの変更

なんでwpにfeedのテンプレートがないんだぜ?だるまんさんが、Twitter 上で「なんでwpにfeedのテンプレートがないんだぜ?」とつぶやいていました。
確かに WordPress では、テーマ変更で見栄えがガラッと変わるのに feed は色気の無い画一的なものばかり。
feedburner 導入で表示されるフィードのようにちょっと一工夫したカッコイイフィードを表示すると自己満足度が急速に上がりそうです。
他にも P2 テーマ用にエントリ本文+コメントを含んだフィードを配信するとか、私的にはあまり嬉しくないですがフィードに AdSense 等の広告を含んだりとか、色々と応用範囲が広がりますね。
そんなわけで、各種フィード用テンプレートをデフォルト以外のものに変更する方法を調べてみました。
結論から言うと、アクションフックの remove, add で、簡単にできます。

WordPress では、各種フィードを要求された場合 do_feed_rss, do_feed_rss2, というアクション(フィルタ)をフックして、それぞれ do_feed_rss(), do_feed_rss2(), という関数内でテンプレートをロードしています。
なので、これらのアクションフックを remove 後、新たにテーマフォルダ内のテンプレートをロードするようなアクションフックを add すれば、お好きなテンプレートをロードできるようになるのです。
続きを読む

Tweetback ブックマークレット – Powerd by Twiple!

Twitter / ayunyan: Twiple!のAPIでTweetback実装中 誰 ...主に日本国内のマイクロブログサービスを横断検索するつぶやき専門の検索エンジン Twiple! を開発した ayunyan さんが、Twiple! の API を利用した Tweetback を実装したと言うことなので、テスト用に簡単なブックマークレットを書いてみた。
以下のリンクをブックマークに登録して、Twitter などのマイクロブログサービスで言及されているかどうか調べたいページで使ってみてください。
しばらくして画面右側に Twiple! での検索結果が表示されます。
邪魔になったら、「Close」をクリックすれば、画面上から消えます。

screenshot
Tweetback!

Twiple! の検索速度が速いので、結構快適に検索結果が見れますね。
Firefox 3.05 (on Ubuntu) でしか動作確認していないので、他のブラウザだと不具合があるかも。
続きを読む

wp-cron で定期実行

Twitter / みなみ: @wokamoto WP 2.7 にしたら、ついに ...みなみさんが WP 2.7 にしたら、wp-shot が動作しなくなったとのことなので、多少修正して WP 2.7 でも動作するようにしてみました。
どうやら wp-shot で、定期チェックに使っている Pseudo-cron.php が WP 2.7 では、正常に動作しないっぽい。
そんなわけで Pseudo-cron.php をバッサリ切り捨てて、WordPress 2.1 からある標準機能 wp-cron を使用することにしました。
ついでに、今までのバージョンだと http://example.com/wp-content/wp-plugins/wp-shot/wp-shot.php に直接アクセスすると、メールチェックが動作していたので、これも動作しないようにしました。
しかし、人のソースを読むのは勉強になるなぁ。

で、その際に wp-cron についてアレコレ試してみたので自分用にメモ。
続きを読む

PHP で Twitter に投稿

このエントリで説明している方法は BASIC 認証での投稿方法です。
BASIC 認証による Twitter への接続は2010年8月末を持って廃止されました。
現在は OAuth を使用する必要がありますので、ご注意ください。
参考:PHPでTwitter APIのOAuthを使う方法まとめ – 頭ん中

PHP を使用して Twitter に投稿する方法のメモ。
と言っても以下のようにするだけ。
続きを読む

Syntax Highlighter for WordPress

今までは、ソースコードのハイライト表示を iG:Syntax Hiliter を使用していたのだが、思う所あってsyntax highlighter で表示するようにした。
で、この JavaScript を WordPress に導入する際に良いプラグインが無いか探したのだが、いまいちなものばかりだったので自作。
といっても、要件は iG:Syntax Hiliter と同様に指定できるものって事だけだったので、あっさりとできあがり。

対応言語は、c, cpp, csharp, java, javascript, delphi, pascal, php, python, ruby, vb, vbnet, sql, css, xml, html, xhtml, xslt。
続きを読む

jQuery 使用スクリプトを Google Chrome 対応で微調整

Google Chrome はレンダリングエンジンに Safari と同じ Webkit を使用している。
そのため jQuery 1.2.6 では Safari として認識される。
# jQuery では、ユーザーエージェントに webkit の文字があると Safari として認識するため

しかし、JavaScript エンジンは独自の V8 を使用しているため、jQuery をそのまま使用すると、微妙に不具合が発生する。
すべては調べきれていないが、概ねエレメントの位置取得で問題が発生している感じだ。

私が JSeries でリリースしているプラグインでは、大抵 JavaScript で jQuery を使用しているため、一挙に微調整をした。
バージョンアップしたのは、以下の5つのプラグイン。

続きを読む

IE の hasLayout プロパティに関するバグ

IE が独自に実装しているプロパティ hasLayout。
これが false の時にレイアウト崩れを起こすバグは多々あります。
このバグを回避するために CSS で * {zoom:1;} とかって指定して強引に全要素の hasLayout プロパティを true にしてしまうハックは、広く知られています。
(参照:IEでのCSSのバグを回避するhasLayout | コリス

しかし、この hasLayout プロパティ、実は true の時にもバグを引き起こすことがあるのです。
しかも、凶悪なことに <ul>, <ol> 要素の hasLayout が true の時、リストマーカーが消えてしまうと言うバグ。 👿
(参照:hasLayoutプロパティがtrueで発生するバグ – Webtech Walker)

で、実は Quick Comments Ver.0.5.1 をリリースしたときにみなみさんに指摘されたのですが、IE でリストマーカーの数字が消える不具合が発覚しました。
これは、jQuery で <ol> 要素を操作する際に、お節介にも jQuery が CSS に zoom:1 をセットしてしまい、結果として hasLayout プロパティが true になってしまうために発生した不具合でした。
とりあえず、回避策として CSS の zoom プロパティを保持しておいて、 IE の場合のみ <ol> 要素の操作終了後、元に戻すようにしてあげました。

IE のお陰で本質的でない所で、頭を悩ませられるのは疲れますね。