[wordpress plugins] 投稿をmixiに同時投稿するWp-MixiPublisher導入


ずっとやろうやろうと思っていて、やっていなかったことを実行する企画第一弾!ということでWp-MixiPublisherを導入してみました。これはWordPressに投稿した記事を同時にMixi日記にも投稿してくれるプラグイン。Mixi日記に外部ブログを設定しているとモバイルだと見えなかったり、あまり公に見える形ではコメントしたくないとかいうニーズを満たせていなかったり、あと正直WordPressをモバイルで使ってもらうには普通の方にはまだまだ敷居高いですね。そこらへんの不満を解消してくれるハズ。

ダウンロードとインストール

ダウンロードはこちらYujiさんのサイトから。
Wp-MixiPublisher 1.0.0 RC2 をリリース at yujilog

ダウンロードして解凍したら、%wordpress_home%/wp-content/plugins/にアップロードして有効化すればおしまい。…のはずが

Fatal error: Call to a member function on a non-object in/vertual/hogehoge/wp-content/plugins/wp-mixipublisher/wp-babel-wpmp.php on line 155

ありゃりゃ、なんでじゃーと思ってエラーメッセージでぐぐって見ると配布エントリのコメントで解決策を提示されてる方を発見。

Saimushiさんのコメントより

ugradeからでしか、導入できないかも知れない理由:
・wp-mixipublisher.php 56行目でinitializeが実行される。
・initializeで$this->upgrade();が実行される。
・upgradeで$this->getWpSettingが実行される。
ココがボトルネックと思われます。

親クラスのgetWpSetting(155行目)で$this->wpbmodel->setDefalutSetting()を前バージョンが無い場合に呼んでいる。
しかし、$this->wpbmodelはwp-mixipublisher.php 66行目で定義される。

暫定解決のために取った対応
WpMixiPublisherController内の一番最後で
initializeを実行するようにした。

今のところこれで様子を見ています。

…とのことで、よく分かりませんが(ぉぃ ((なぜよく分からないのかというと、筆者は文系/事務系につきプログラムには詳しくないのである。)))WpMixiPublisherControllerのinitializeを最後に実行すれば良い模様。ということで、wp-mixipublisher.phpの47行目以降を以下のように変更[赤字は変更部分 /* */内はコメント。なくてもよい]

    /**
     * WpMixiPublisherController のコンストラクタ。
     */
    function WpMixiPublisherController() {
        
        $plugin_name = 'wp-mixipublisher';
        $plugin_panel_name = 'Wp-MixiPublisher';
        $access_level = 8;
        
	/*
        $this->initialize(
            $plugin_name,
            $plugin_panel_name,
            $access_level);
	初期化ロジックがおかしいので最後に移動 */
        
        $commonVO = new WPBabelSettingVO_01a_wpmp();
        $commonVO->setParam('name', $plugin_name);
        $commonVO->setParam('version', get_bloginfo('version'));
        
        $this->wpbview = & new WpMixiPublisherView($commonVO);
        $this->wpbmodel = & new WpMixiPublisherModelFacard();

	/* ↑から移動してきた部分 */
        $this->initialize(
            $plugin_name,
            $plugin_panel_name,
            $access_level);
    }

こうしたら、有効化成功(‘∇’)!設定配下にWp-MixiPublisherタブが現れ、ここでmixiへのログイン設定などができるようになりました。

Wp-MixiPublisher設定画面

メールアドレスとパスワードはMixiにログインするためのいつもの(FirefoxにWordPressへのログインパスワードを記録させていると、自動的にWPパスワードを補完入力しているので注意。Mixiのを入力してやりましょう)、投稿の全文か概要かを選択します。またフッターを設定できるので、私の場合は

──────────────────────────────────────────
この日記の正式版は%sからご覧頂けます。mixi日記では画像やリンク等が反映されていない場合があるので、ぜひ上記ページをご訪問ください。
コメントを頂戴できましたら、mixiでも上記ページでもどちらでも構いません。
──────────────────────────────────────────

として、WordPressのエントリ自体に誘導してやるようにしました(文章はちと再考の必要がありそうですが…)。%sがエントリへのURLに自動的に置換されるようになっています。

この設定で、エントリをポストするときに右側のタブにある「Mixiへこの記事を投稿する」にチェックを入っていればMixi日記にもエントリがポストされるようになります。逆にMixi日記にはポストしたくないもの(Mixiでの活動内容とWordPressの活動内容がまったく違うとか)はこのチェックを外す必要があります。

Mixiへの投稿も無事完了!おかげでMixi日記にだけ日記を書くこともできるようになったのですが、WordPressエントリにHighslideJS用のコードを含んでいるとうまく変換されない模様…(´・ω・`) 投稿が途中で切れてしまいます。仕方が無いのでMixi日記へは概要だけをポストすることで暫定対処としました。

,

“[wordpress plugins] 投稿をmixiに同時投稿するWp-MixiPublisher導入” への15件のフィードバック

  1. Mixi とのコラボレーション:Wp-MixiPublisher…

    いったいいつ頃からでしょうか。Mixi という会員制のソーシャルネットワークサイト(SNS)に登録していますが、アクセスする度にログインしなければならないのがめんどくさいのと、何….

  2. とても参考になる記事、早速導入してみたところ、記事の設定ファイルのところも同じように書き換えたところ、成功しました。貴重な情報ありがとうございました。

  3. 同様のエラーが出ていましたが、こちらの方法で見事解決しました。
    サンプルコードが大変参考になりました。ありがとうございます。

  4. ClearGreen mixi≫UEoツ、¬ツ、Cツ、-ツ、Tツ、・ツ、ツソ…

    ツ、Eツ、ツ、ツ、|ツ、iツ、±ツ、CWordPressツ、E×e°ツ、o
    !OWp-MixiPublisher 1.0.0 RC2!×ツ、oAoツ、Aツ、eツ、3ツ、Eツ、Eツ、eツ、e!¢ツ、3ツ、Aツ、eツ、Eツスnツ、ツ、ツ、ツソμ-≫oツ、¬
    mixiツ、EA±≫tツ、E¢A×ツ、μツ、iツ、eツ、eツ、|ツ、Eツ、Eツ、eツ、Tツ、・ツ、ツソ!…

  5. とても有意義な情報ありがとうございます。
    おかげで無事プラグインを走らせる事ができました。
    自分も有意義な情報を発信出来るよう精進したいと思います。

  6. このプラグインのリリース後、だいぶmixi側の仕様が変わっているので、エントリによってはきちんとmixiに投稿されないことが結構あります。
    みなさん、ご利用は計画的に…。

  7. はじめまして。いつもこちらでお勉強させていただいてます。

    mixiとブログを併用している私には、このプラグインは凄く魅力的なのですが(現在は、mixiにも落としたい記事はコピペで対応してます/苦笑)、どうやってもmixiに記事が反映されません…。
    mixi側のセキュリティ強化のせいだと仰る方もいらっしゃるようですが、Odyさんはもちろん、他にも成功されてる方がいらっしゃるようなので、どうしてダメなんだろう…とがっくり。うまくいってる方々が羨ましいです(涙)

  8. >めぐみさん
    おやー、何ででしょうね。
    上にも書いていますが、エントリの内容によってはmixi側でエラーを出してしまって、途中で切れてしまうような投稿ができてしまいます。
    配布元さんでも更新の様子がないようなので、ちょっと難しそうですねぇ。

  9. すばらしいプラグイン!と思いインストール。
    プラグインを有効化し、mixiのメール、パスワード設定やmixi側の設定(mixi日記に変更)しましたが、記事投稿の際、下記のようなエラーがでます。。。
    Fatal error: Call to undefined function: wp_get_current_user() in /usr/home/gt111127/html/blog/wp-content/plugins/wp-mixipublisher.php on line 240

    ちなみにwp-mixipublisherの240行目は下記の太字部分のようになっていました。

    function executePublishToMixi($postId, $isModify=false) {
    if(in_array($postId, $this->_publishedId)) {
    return $postId;
    }
    $settingVO = $this->getWpSetting();
    if(!$settingVO->getParam(‘user_id’)) {
    return $postId;
    }

    $post = get_post($postId);

    // 公開しない場合は終了
    if($post->post_status != ‘publish’) {
    return $postId;
    }

    // 1.0.0 RC2: XML-RPCリクエストの場合ディフォルト設定を優先する
    if(defined(‘XMLRPC_REQUEST’) && XMLRPC_REQUEST) {
    // ディフォルト設定が有効でなければ終了
    if($settingVO->getParam(‘default’) != 1) {
    return $postId;
    }

    だれかわかる方教えてくださーい。

  10. >キミさん
    wp_get_current_user()はプラグインではなくてコアで定義されてる関数なので、mixipublisherとは別のところでエラーを出してませんか~?

    ログイン権限回り(文字コードがEUCとか、caapabilitiesとか)が怪しいような気がします。

  11. 当面の課題が解決…

    ・メールでの投稿時に文字化けする
     →WordPress:SOMY.JP ≫ Blog Archive ≫ SOMY Mobile Gateの導入で解決しました。
    ・投稿後に自動で記事が反映されない
     →自動更新は難しかったので、いちい…

フォームは コメントしてほしそうに こちらを見ている……!

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください