Bitbucket の service hook で POST されてくるパラメータ例

{"payload"=>
  {"repository": {"website": "",
                  "fork": false,
                  "name": "test",
                  "scm": "git",
                  "absolute_url": "/myusernamehoge/test/",
                  "owner": "myusernamehoge",
                  "slug": "test",
                  "is_private": true},
   "commits": [{"node": "8506a6756473",
                "files": [{"type": "added", "file": "asd"}],
                "branch": "master",
                "utctimestamp": "2012-12-21 19:22:22+00:00",
                "author": "myusernamehoge",
                "timestamp": "2012-12-21 20:22:22",
                "raw_node": "8506a675647355df5c8e1c71b28d57535a5544ee",
                "parents": ["8da243e2f302"],
                "raw_author": "Hash <hoge@example.com>",
                "message": "kj\\n",
                "size": -1,
                "revision": null}],
   "canon_url": "https://bitbucket.org",
   "user": "myusernamehoge"}}

引用元: https://gist.github.com/memerelics/4355203

古いIE利用時、SSLページからファイルダウンロードができない

IE9未満で起きる模様(IE8で確認)。

HTTPヘッダーのキャッシュ関係パラメータによって起こるものらしい。

今回はExcelファイルのダウンロードにおいて起こったので、以下のサンプルのような感じでやるとダウンロードできた。

<?php
if (preg_match('/MSIE [678]/', $_SERVER['HTTP_USER_AGENT'])) {
    //古いIE対応
    header('Cache-Control: private');
    header('Pragma: ');
    header('Content-Type: application/octet-stream');
} else {
    //モダンブラウザ
    header('Content-Type: application/vnd.ms-excel');
}
header('Content-Disposition: attachment; filename="hoge.xls"');

// output...

Webページ形式Excelデータで同一セル内改行するには

セル内改行を普通に <br> なんかに置換すると、見た目上はセル内改行されるが、複数行が結合された状態になってしまう。
(HTMLのテーブル行において、rowspanを2以上にした時のように)

これを避け、純粋に単一セル内で改行をさせるには、生成したHTMLコードに以下のスタイルを追加する。

br { mso-data-placement: same-cell; }

<head><style>内で定義してもいいし、<br style="mso-data-placement: same-cell;">のように直接書いてもOK。

少なくとも Excel 10 で使える模様。それより古いのは未確認。

WordPressのショートコードが取るパラメータは文字参照に変換される

当たり前のことなんだけどちょっとハマったので。

正しくは
「ビジュアルエディタで編集したコンテンツは―」
ということになのだが。

具体例として、ビジュアルエディタで以下のように入力した場合、

[anyshortcode arg1="hoge&piyo"]


プラグイン側で受け取る値は以下のようになる。

$atts['arg1'] = 'hoge&#038;piyo';