wp-mixipublisher:テスト

2008年1月24日 (木曜日) - 20:01:31 by decama

この記事がポストされれば問題ないはず。

ならば修正もされるはず。

どちらもOK。

久しぶりにここを更新するようになって、気がついたらmixiへの書き込みが出来なくなってた。どうやらmixi側の修正にプラグインが対応できてかったのが問題みたいだったけど、その修正対応版でもなぜか動かない。
ソースを追っかけてみて、post_idを直接指定してプラグインファイルを実行させれば書き込めることは確認取れたので(前3件の記事をmixiに投稿してみた)、要はpublishToMixiに記事IDを渡してやればいいはず。
saveHandler, publishHandler からの executePublishToMixi が publishToMixi を呼び出してるのかと思ったらそうじゃなかった。
どうやら、executePublishToMixi でチェックさせた後で、 mixipublisher_isEnableSelfExecute から publishToMixiを呼んでる。
ところが、現行のWordPress(2.3.2)はpost_idをgetで投げてないから、 ここでコケる。
post_idをpostedに修正したら動くかな?と思ったけど、新規投稿はいけるけど、投稿済み記事の更新がダメだった。
なので、 executePublishToMixi から直接 publishToMixi を呼び出すように修正。

function executePublishToMixi($postId, $isModify=false) {
        if(in_array($postId, $this->_publishedId)) {
            return false;   //falseを返すように修正
        }
        $settingVO = $this->getWpSetting();
        if(!$settingVO->getParam('user_id')) {
            return false;   //falseを返すように修正
        }

        $post = get_post($postId);

        // 公開しない場合は終了
        if($post->post_status != 'publish') {
            return false;   //falseを返すように修正
        }

        // 1.0.0 RC2: XML-RPCリクエストの場合ディフォルト設定を優先する
        if(defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) {
            // ディフォルト設定が有効でなければ終了
            if($settingVO->getParam('default') != 1) {
                return false;   //falseを返すように修正
            }
            // すでにある投稿で、Mixiに投稿していなければ終了
            if(!$post->mixi_diary_id && $isModify) {
                return false;   //falseを返すように修正
            }
        }else{
            if($_POST['publish_mixi'] != 1) {
                return false;   //falseを返すように修正
            }
        }

        // 1.0.0 RC2: リクエストに利用するクッキーを既存のものからではなく、新しく作成する
        $user = wp_get_current_user();
        $cookies = USER_COOKIE.'='.urlencode($user->user_login).'; ';
        $cookies.= PASS_COOKIE.'='.md5($user->user_pass);

        $relative_path = preg_replace('/^'.preg_quote(ABSPATH, '/').'/', '/', __FILE__);

        $ping_url = get_settings('siteurl') . $relative_path;
        $parts = parse_url($ping_url);
        $argyle = @ fsockopen(
        $parts['host'],
        $_SERVER['SERVER_PORT'],
        $errno,
        $errstr,
        0.01);

        if ($argyle) {
            fputs($argyle, "GET {$parts['path']}?" .
            "post_id=" . $postId .
            " HTTP/1.0\r\nHost: {$parts['host']}\r\nCookie: {$cookies}\r\n\r\n");
        }
        $this->_publishedId[] = $postId;
        return $postId;
    }

    function saveHandler($postId) {
        if ($postId = $this->executePublishToMixi($postId, true))   //$postIDが戻された時だけmixi記事を更新
            $this->publishToMixi($postId);
    }

    function publishHandler($postId) {
        if ($postId = $this->executePublishToMixi($postId))  //$postIDが戻された時だけmixiに記事を投稿
            $this->publishToMixi($postId);
    }

これで多分大丈夫だと思う。

12 Responses - “wp-mixipublisher:テスト”

  1. Funkanoll.com : 2008/01/26 - 02:59:04 -

    wp-mixipublisher:なおりました...

    ちと、意欲がわいてきたのでw
    Wordpressを2.2.3にしてから効かなくなっていたmixi-publisherを
    こちら↓の方のメモを参考にイジってみました。
    開発用メモ ? Blog Archive ? wp-mixipublisher:テスト
    成.....

  2. Mindscope » Blog Archive » ダメだったプラグイン判明 : 2008/02/11 - 23:49:05 -

    [...] で、次にこのファイルをdecamaさんとこにあるように修正して…… これでOKでした。 [...]

  3. 日々mnagaku» ブログアーカイブ » Wp-MixiPublisher : 2008/04/01 - 12:52:46 -

    [...] 現時点では、オリジナルの1.0.0RC2も、改変版の+cも、WP2.5では動かないので、+cにdecama氏のパッチを当てて動かしている。 [...]

  4. 兄くりっぷ : 2008/04/16 - 20:43:54 -

    Wp-MixiPublisher プラグインを導入...

    WordPressの記事を、mixiの日記として投稿できるプラグインが、yujilogと言うサイトで公開されていましたので、導入させていただきました。
    Wp-MixiPublisher 1.0.0 rc1
    現在は不具合があるかもしれ...

  5. HARMONICS DESIGN BLOG » mixi日記にしたワケ : 2008/04/28 - 19:35:43 -

    [...] http://decama.info/wordpress/137 ◆これで終わりだろ。 [...]

  6. WordPressからmixiへ投稿 | Fumihiro Kato / 加藤 文彦 : 2008/07/27 - 01:14:31 -

    [...] Wp-MixiPublisher 1.0.0 RC2というプラグインがあるのを知ったので試していたましたが、うまく投稿できません。mixiのWordPressコミュニティによると、変更版に差し替えて、さらにこの修正を行えばよいらしいですが、、動いていない人も多数います。どうもPHP5だと動き、PHP4だと駄目なようで。確かにここで使っているハッスルサーバーもPHP4。 [...]

  7. wp-mixipublisherのpatch | Fumihiro Kato / 加藤 文彦 : 2008/07/29 - 16:40:00 -

    [...] 2)もすでに適用されています。 [...]

  8. wp-mixipublisher:なおりました - My testing Habari : 2008/10/05 - 18:27:50 -

    [...] ちと、意欲がわいてきたのでwWordpressを2.2.3にしてから効かなくなっていたmixi-publisherをこちら↓の方のメモを参考にイジってみました。開発用メモ ? Blog Archive ? wp-mixipublisher:テスト成功!これでまた、自動的にmixiに投稿できるようになった。感謝感謝。 [...]

  9. wordpressからmixiへ同時投稿 | my96soft-集合知のすばらしさを求めて- : 2009/05/12 - 18:10:59 -

    [...] こちら [...]

  10. wordpressからmixiに投稿.wp-mixipublisherまとめ | my96soft-集合知のすばらしさを求めて- : 2009/05/12 - 18:25:52 -

    [...] 開発用メモ ? Blog Archive ? wp-mixipublisher:テスト [...]

  11. wordpressからmixiへ同時投稿 « my96soft避難所 : 2009/05/17 - 21:07:52 -

    [...] こちら [...]

  12. wordpressからmixiに投稿.wp-mixipublisherまとめ « my96soft避難所 : 2009/05/17 - 21:27:14 -

    [...] 開発用メモ ? Blog Archive ? wp-mixipublisher:テスト [...]

Leave a Reply

XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>