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 にならないので、そのへんの調整も必要ですね。
>lilyfanさま
返信ありがとうございます。
仰るとおり、Publish to Mixiは上記のサイトからダウンロードしたプラグインを使わせて頂いております。
publishToMixi.phpは「publish_phone」アクションを受けられるよう上記のように変更し、Ktai Entryには「 $_POST[‘publishToMixi’]」を「true」でポストするアクションを加えれば連携が可能になるという事でしょうか。
やはり、Ktai Entryのソースにも手を加えないといけないようですね。
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' );
}
>lilyfanさま
コードまで書いて頂きありがとうございます。
さっそく試しまして、見事Ktai Entryのメール投稿にてmixi日記へも自動投稿することを確認しました。
ただ、上記の条件だとPCにてブログを更新する際も、チェックのオンオフに関わらず無条件でmixi日記へ投稿されてしまいます。
「publish_post」の部分を「publish_phone」にも変えてみたのですが、そうするとメール投稿ではmixi日記へ自動投稿されません。
投稿に使用しているメールアドレスはケータイのアドレスではなくGmailなのですが、何か関係があるのでしょうか。
現状でも大変満足なのですが、せっかくですので最後まで研究してみたいと思います。
ごめんなさい。コードに誤記がありました。
add_action( 'dbx_post_advanced', 'renderOption' );
add_action( 'publish_post', 'publishHandler' );
add_action( 'publish_phone', 'publishHandler_phone' );
ですね。publish_phone のときは、強制的に $_POST をいじって、本来の publishHandler() を呼ぶということです。
>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」として認識されているのでしょうか。
逆の発想でコードを変更しました。
従来のチェックボックスを「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さまのご教授がなければこの発想は思いつきませんでした。
この度は色々とありがとうございます。