ホーム > つくったもの, 雑記 > Wp-MixiPublisher 2007/10/01のmixiサイトデザインリニューアル対応版を勝手に作ってみた

Wp-MixiPublisher 2007/10/01のmixiサイトデザインリニューアル対応版を勝手に作ってみた

勝手に改造した。ベースは1.0.0 RC2。

2007/10/01のmixiサイトデザインリニューアルに伴い、Wp-MixiPublisherが動かなくなりました。

しょんぼりなので頑張って強引に直してみた。

まず、各種設定のWp-MixiPublisherのページでMixiPublisherの有効状況が有効にならないという問題を確認。

これは、mixiの設定(http://mixi.jp/edit_account.pl)の「日記・ブログの選択」で「ミクシィ日記」が選択されていることを確認している部分(isEnabledMixiDiary関数)がこけてしまっていることが原因。Wp-MixiPublisherのソースを読むと、

PHP:
  1. </p>
  2. <p>if(strpos($content, '<select name=diary_host><option value=1 selected>') !== false) {</p>
  3. <p>

とやって判定している。

mixiのソースを読むと、

HTML:
  1. </p>
  2. <p><dt>日記・ブログの選択 <span class="necessaryItem">*</span></dt></p>
  3. <p><div class="editItem01"></p>
  4. <p><select name="diary_host"></p>
  5. <p><option value=1 selected>ミクシィ日記</p>
  6. <p><option value=2>楽天広場</p>
  7. <p>...</p>

といった内容。……改行が誤認されているのか?「"」はいいのか?

ひとまず暫定的に

PHP:
  1. </p>
  2. <p>if(strpos($content, '<option value=1 selected>') !== false) {</p>
  3. <p>

を通して有効になるようにしてみた。

私の環境では他にoption value=1がないので誤爆していませんが、設定如何によっては誤爆するかもしれません。

これで各種設定のWp-MixiPublisherのページでMixiPublisherの有効状況が有効にならない問題は解決。しかし投稿できない

投稿できないのは、根本的には各種要素がXHTMLにちゃんと対応したことが問題の模様。

投稿確認画面の処理に正規表現を用いているんだけど、こいつが誤爆してる。

もっと具体的にぶっちゃけると、

HTML:
  1. </p>
  2. <p><input type="hidden" name="diary_title" value="ほげほげ" /></p>

に対する

PHP:
  1. </p>
  2. <p>preg_match_all('/<input type=["\']?([^<>\s]*?)["\']? name=["\']?([^<>\s]*?)["\']? value=["\']?(.*?)["\']?>/is', $result, $match, PREG_SET_ORDER);</p>
  3. <p>

の問題。

おそらく修正前のmixiではinputタグを閉じていなかったのでこの正規表現でOKだったんだけど、閉じを誤爆してvalue要素が狂ってしまって各種name/value対応が狂ったのが原因。(興味がある人は、確認画面のソースを覗いてname/valueの対応を考えて見ましょう。)

っつーわけで、正規表現を適当に修正。

PHP:
  1. </p>
  2. <p>preg_match_all('/<input type=["\']?([^<>\s]*?)["\']? name=["\']?([^<>\s]*?)["\']? value=["\']?(.*?)["\']?\/>/is', $result, $match, PREG_SET_ORDER);</p>
  3. <p>

以上をもって投稿が可能になりました。適当に修正したファイルをアップしておきます。

AuthorとかVersionとかは勝手にちょこっといじりました。怪しいので今後適当に直します。元々がGPL2っぽいので、それを変えていないから多分問題は起きない……かな?

以下、1.0.0 RC2をベースに勝手に改造したファイル。置き換えれば動きます。phpファイルをそのままzip圧縮しただけなので、解凍するときは注意。

wp-mixipublisher.php 2007/10/01 mixiサイトデザインリニューアル対応版

追記:改造元にフッターを先に表示する改造が施されていたのを忘れていました。(他にもどこかいじったっけ?もう覚えてないぞ。)というわけで修正版UP。バージョン表記を1.0.0 RC2 +aに適当に変更。

wp-mixipublisher.php 2007/10/01 mixiサイトデザインリニューアル対応版 修正版

カテゴリー: つくったもの, 雑記 タグ:
  1. 2007 年 10 月 4 日 01:14 | #1

    はじめまして。同じ問題で悩んでいたので、先に解決された方がいて助かりました。
    すばらしいです。

    僕のサイトでも、phpファイルを置き換えたら投稿できました。ただ、
    投稿内容と、フッターが逆、つまり、まずフッターが先に書き込まれて
    そのあと本文が書き込まれてしまっています。もし修正可能でしたら、
    よろしくお願いします。お忙しい様でしたら、自分が修正するつもりです。

    それではまた。

  2. 2007 年 10 月 4 日 01:23 | #2

    ↑ですが、簡単でしたね。おそらくとがびとさんはフッターを先に
    投稿する設定にされていたのですね。ソースのコメント部を
    入れ替えさせて頂き、所望の形になりました。

    本当に感謝しています。ありがとうございました。これを機に
    ちょっとソースを覗いてみて、カスタマイズしてみようかと思います。

  3. 2007 年 10 月 4 日 05:17 | #3

    解決できたお二方おめでとうございました。
    修正前に既にカスタマイズをしていたことをすっかり忘れていました。
    適当に直しておきます。

    ちなみにフッターを先にしていた理由は、現在のMixiPublisherのタグ殺しが不完全で、フッターが出る前に色々とぶっ壊れることが多い=フッターが読めなくなることが多いためです。と一応書いておいてみる。

  4. 2007 年 10 月 4 日 06:14 | #4

    上3つは全部同じ人です^^
    本当に感謝しております。

    自分の使っている範囲ではフッターが死んでたことは無いような気がしますが、
    もしそういう事態に陥ったら、これを思い出します。

    ではでは。

  5. tk
    2007 年 10 月 6 日 21:36 | #5

    mixiに同時投稿できなくて困ってます。wordpressはver.2.2.3です。
    このページを参考にファイルをダウンロードして有効化にしてmixiの設定でも有効になっているのに、mixiに投稿のチェックボックスをチェックして投稿しても、mixi側に反映されないんです。
    ほんとに困ってます。何か他に原因として考えられることはありますでしょうか?
    ブラウザはsafariを使ってます。

  6. 2007 年 10 月 6 日 23:09 | #6

    >tk氏
    Wp-MixiPublisherの設定 の MixiPublisherの有効状況 が有効になるか、くらいしか確認する項目が思いつきません。
    あとは、スクリプトの要所要所にprintfを埋め込んでデバッグすれば、mixiへの投稿処理自体ができているのかどうかは判定できると思います。まんま私が改造したときの手法ですが。

  7. tk
    2007 年 10 月 6 日 23:22 | #7

    迅速な返信ありがとうございます。
    ごめんなさい、PHPは勉強不足でまだよくわかりません。
    printfを埋め込んでデバッグする方法をもう少し具体的に教えていただけるとありがたいのですが。

  8. 2007 年 10 月 11 日 03:04 | #8

    ページ右の最新コメントに出てたのに気がつきませんでしたすいません。

    私の場合は、適当な場所でfopen,fwrite,fcloseを使って変数やらなんやらを出力するという古典的な手法を用いました。
    (関数の呼び出し状況や、if分の判定結果などをひたすらテキストに出力。後で読んで確認。
    snoopy->submitの返り値にhtmlページ全体が来るのなんかも(ファイルに吐けばブラウザで見れて)結構役に立ちます。)
    phpに慣れていないので、もっと賢い方法がたくさんあるかもしれません。

  1. 2007 年 10 月 3 日 21:48 | #1
  2. 2007 年 10 月 4 日 01:29 | #2
  3. 2007 年 10 月 4 日 17:05 | #3
  4. 2007 年 10 月 10 日 14:06 | #4
  5. 2007 年 10 月 15 日 15:42 | #5
  6. 2007 年 10 月 17 日 17:58 | #6
  7. 2007 年 10 月 24 日 22:47 | #7
  8. 2007 年 10 月 29 日 11:42 | #8
  9. 2007 年 11 月 7 日 11:26 | #9
  10. 2007 年 12 月 10 日 09:47 | #10
  11. 2007 年 12 月 21 日 17:09 | #11
-->