Essays


Send to Kindle

ミクシィ日記へブログの抜粋文を自動転送してみる

ミクシィ日記へブログの抜粋文を自動転送するようなワードプレスのプラグインを書いてみました。ただし、試しに数時間書いてみただけなので、正式なプラグインとして公開できるほど作りこんでいません。

このコードをphpファイルとして、ワードプレスのインストールフォルドのwp-content/pluginsの下に保存するとワードプレス管理ページに他のプラグインとともに表示されます。

この試作では投稿後、編集する度にミクシィに転送されてしまうので、それを取り敢えずなおそうと思います。(6月5日:なおしました。)それから、ミクシィID、登録Email、パスワードはワードプレスの画面でユーザが登録できるようにしなければなりませんね。

// mixi USER infomation $user = 'ミクシィ登録email'; $pass = 'パスワード'; $id = 'ミクシィID';

// Get the post content $recentPosts = wp_get_recent_posts(1); $wpmixiPost = $recentPosts[0]; $title = $wpmixiPost['post_title'];

$summary = $wpmixiPost['post_excerpt']; $postContent = $wpmixiPost['post_content']; $summary = $postContent; // Remove extraneous stuff from the content text $postContentStripped = strip_tags($postContent); $postContentReplaced = str_replace(' ',' ',$postContentStripped ); $postContentPregged = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $postContentReplaced ); if(strlen(mb_convert_encoding($postContentPregged, 'SJIS', 'UTF-8')) > 200){ $summary = mb_substr($postContentPregged, 0, 200, 'UTF-8'); } else{ $summary = $postContentPregged; } $permalink = get_permalink($wpmixiPost['ID']); $summary = $summary . "... " . $permalink;

// Generate post data $post_data = "" . "" . "$title" . "

$summary" . "";

if (($wpmixipost->post_status == 'publish' || $_POST['publish'] == 'Publish') && ($_POST['prev_status'] == 'draft' || $_POST['original_post_status'] == 'draft' || $_POST['original_post_status'] == 'auto-draft' || $_POST['prev_status'] == 'pending' || $_POST['original_post_status'] == 'pending' ) ) {

// WSSE Authentication $nonce = pack('H*', sha1(md5(time().rand().posix_getpid()))); $created = date('Y-m-d\TH:i:s\Z'); $digest = base64_encode(pack('H*', sha1($nonce . $created . $pass))); $wsse_text = 'UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"'; $wsse_header = sprintf($wsse_text, $user, $digest, base64_encode($nonce), $created);

// mixi POST URL $url = 'http://mixi.jp/atom/diary/member_id=' . $id;

$request = new WP_Http; $headers = array( 'X-WSSE' => $wsse_header); $result = $request->request( $url , array( 'method'=> 'POST', 'body'=>$post_data, 'headers'=>$headers, 'user-agent'=>'WP to Mixi' ) ); // Success? if ( !is_wp_error($result) && isset($result['body']) ) { if ($return == 'body') { return $result['body']; } else { return $result; }

// Failure (server problem...) } else { return false; }

}

return false; }

add_action( 'publish_post', 'publish_to_mixi' ); ?>

Original post: June 5, 2010 | Last updated: June 5, 2010

Previous: A news letter from Kubo's Sushi
Next: Finally went back to Ruggles Grill
Read more

comments powered by Disqus