• 解決済 kawaki

    (@kawaki)


    先日このブログソフトの存在を知り実際に使用してまだ数日ですが、プラグインの多さと便利さに驚きと感動が絶えません。
    プラグイン開発者の皆様へこの場を借りてお礼申し上げます。

    今回は「Ktai Entry」と「Publish to Mixi」のプラグインで質問があり投稿させて頂きました。

    Ktai Entryにて受け取った記事をPublish to Mixiにてmixi日記へ投稿したいのですが、この2つのプラグインで連携は可能でしょうか。

    現在だと、Ktai Entryにて一度ブログへ投稿した後に、ブログの管理画面からメール投稿したタイトルを選択し編集画面に入り、詳細オプションにあるPublish to Mixiのチェックボックスにチェックを入れて保存をしないとmixi日記へは投稿されません。

    メール投稿だけでブログとmixi日記の両方を追加できれば良いなと思っております。

    お手数をお掛け致しますがよろしくお願いします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    Ktai Entryにて受け取った記事をPublish to Mixiにてmixi日記へ投稿したいのですが、この2つのプラグインで連携は可能でしょうか。

    http://ksnn.com/diary/ で配布されているものだとすると、ちょっと改造すればいけると思います。

    84 行目に以下のコードがありますが、Ktai Entry は publish_phone アクションのみを実行しているので、それを追加してやればいいです。
    add_action( 'publish_post', 'publishHandler' );

    add_action( 'publish_phone', 'publishHandler' );

    ただし、メール投稿の場合は $_POST['publishToMixi'] が true にならないので、そのへんの調整も必要ですね。

    トピック投稿者 kawaki

    (@kawaki)

    >lilyfanさま
    返信ありがとうございます。
    仰るとおり、Publish to Mixiは上記のサイトからダウンロードしたプラグインを使わせて頂いております。

    publishToMixi.phpは「publish_phone」アクションを受けられるよう上記のように変更し、Ktai Entryには「 $_POST[‘publishToMixi’]」を「true」でポストするアクションを加えれば連携が可能になるという事でしょうか。

    やはり、Ktai Entryのソースにも手を加えないといけないようですね。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    Entryには「 $_POST[‘publishToMixi’]」を「true」でポストするアクションを加えれば連携が可能になるという事でしょうか。

    いえいえ、Publish to Mixi の方で、publish_phone で呼ばれたときは publishToMixi のチェックを行なわない、ということです。
    どんなアクションフックを使ったかを調べるのはちょっと難しいので、別の関数を用意するのが手軽でしょう。以下のような感じです。

    function publishHandler_phone ( $postId ) {
        $_POST['publishToMixi'] = true;
        return publishHandler($postId);
    }
    …中略…
    if ( function_exists( 'add_action' ) ) {
    	add_action( 'dbx_post_advanced', 'renderOption' );
    	add_action( 'publish_post', 'publishHandler' );
    	add_action( 'publish_post', 'publishHandler_phone' );
    }
    トピック投稿者 kawaki

    (@kawaki)

    >lilyfanさま
    コードまで書いて頂きありがとうございます。

    さっそく試しまして、見事Ktai Entryのメール投稿にてmixi日記へも自動投稿することを確認しました。

    ただ、上記の条件だとPCにてブログを更新する際も、チェックのオンオフに関わらず無条件でmixi日記へ投稿されてしまいます。

    「publish_post」の部分を「publish_phone」にも変えてみたのですが、そうするとメール投稿ではmixi日記へ自動投稿されません。

    投稿に使用しているメールアドレスはケータイのアドレスではなくGmailなのですが、何か関係があるのでしょうか。

    現状でも大変満足なのですが、せっかくですので最後まで研究してみたいと思います。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    ごめんなさい。コードに誤記がありました。

    add_action( 'dbx_post_advanced', 'renderOption' );
    	add_action( 'publish_post', 'publishHandler' );
    	add_action( 'publish_phone', 'publishHandler_phone' );

    ですね。publish_phone のときは、強制的に $_POST をいじって、本来の publishHandler() を呼ぶということです。

    トピック投稿者 kawaki

    (@kawaki)

    >lilyfanさま
    度々の情報及びコードの提供ありがとうございます。

    上記の通り「publish_phone」と変更しましてもうまくいきませんでした。
    変更後のコード↓

    if ( function_exists( 'add_action' ) ) {
    	add_action( 'dbx_post_advanced', 'renderOption' );
    	add_action( 'publish_post', 'publishHandler' );
    	add_action( 'publish_phone', 'publishHandler_phone' ); //追記コード
    }

    以下のように「publish_post」の場合はメール投稿でmixi日記へも自動投稿されます。

    add_action( 'publish_post', 'publishHandler_phone' ); //追記コード

    この場合だと、通常の投稿以外に編集した際もmixi日記へ新規投稿されてしまうため注意が必要です。

    Ktai Entryで「publish_phone」としてポストしてもPublish to Mixiには「publish_post」として認識されているのでしょうか。

    トピック投稿者 kawaki

    (@kawaki)

    逆の発想でコードを変更しました。

    従来のチェックボックスを「mixi日記にポストしない」というチェックボックスに変え、そのチェックがオンになっている場合はmixi日記にポストしないようにしました。

    実際の変更は以下の範囲の2行のみです。

    /**
     * Renders the option box in the "Write Post" page in the wordpress admin.
     *
     */
    function renderOption () {
    	echo '<div class="postbox closed" id="test">';
    	echo '<h3><a class="togbox">+</a> Publish to Mixi</h3>';
    	echo '<div class="inside">';
    	echo '<input type="checkbox" name="NOpublishToMixi" id="NOpublishToMixi" value="1" checked/> No Publish to Mixi'; //←変更箇所
    	echo '</div>';
    	echo '</div>';
    }
    
    /**
     * Publishes the wordpress entry to mixi.
     *
     * @param number $postId
     * @return postId
     */
    function publishHandler ( $postId ) {
    	global $mixi_username, $mixi_password;
    
    	if ( $_POST['NOpublishToMixi'] == 1 ) { //←変更箇所
    		return $postId;
    	}

    当面はこれで様子見をしようと思います。

    >lilyfanさま
    lilyfanさまのご教授がなければこの発想は思いつきませんでした。
    この度は色々とありがとうございます。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「Ktai EntryとPublish to Mixiの連携」には新たに返信することはできません。