Vicuna AdaptorにTwitterへの投稿機能を追加する

このブログのThemeはVicuna Ext.で,Vicuna Adaptorというプラグインを使って,はてブカウンターなどを 表示させています.これのハックとして,Twitterへの投稿ボタンを追加するというのを発見したので, 付けてみました.しかし,そのままだと上手くいかなかったので,僕がやった方法を書いておきます. まぁ,Vicuna Ext.だけだったらテーマに直接書き込んでもいい気がしますが,やはりこういうのはプラグインに 分離できるといいですよね.

/vicuna-adaptors/includes/admin_ui.php

このファイルは管理画面でのVicuna Adaptorの挙動を設定しています.一覧の一番下にTwitter用の設定を 追加すると共に,idがPOSTされた時の挙動なども設定してあげます.

指定の場所に以下のコードを追加します.

function vicuna_adaptor_menu()の中

if (isset($_POST['twitter-id'])) {
    $options['twitter-id'] = $_POST['twitter-id'];
    update_option('vicuna_adaptor', $options);
}

function vicuna_adaptor_menu()の中のif ($_GET['action'] == 'deactivate-all')の中

if (isset($options['twitter-id'])) {
    $tmp['twitter-id'] = $options['twitter-id'];
}

この2つはhatena-star-tokenがほぼ同じコードを書いているのでそれをコピーすればいいでしょう.

下の方の</tbody>の前くらい

<?php   /* Twitter */
    $status = $options['twitter']; ?>
    <tr<?php if ($status) : echo ' class="active"'; endif; ?>>
        <td class='name'><a href="http://twitter.com/"><img
src="http://twitter.com/favicon.ico" />twitter</a></td>
        <td class='desc'><p>記事のurl付きであなたのTwitterにコメントが届きます</p></td>
        <td class='status'><span class="<?php if (!$status) : echo 'in'; endif; ?>active"><?php if ($status) : echo 'A'; else : echo 'Ina'; endif; ?>ctive</span></td>
        <td class='togl action-links'><a href='plugins.php?page=admin_ui.php&action=<?php if ($status) : echo 'in'; endif; ?>active&#038;extension=twitter' title='<?php if (!$status) : echo 'A'; else : echo 'Ina'; endif; ?>ctive this plugin' class='edit'><?php if (!$status) : echo 'A'; else : echo 'Ina'; endif; ?>ctive</a></td>
    </tr>
    <tr<?php if ($status) : echo ' class="active"'; endif; ?>><td colspan="4" style="text-align: center"><form method="post" action="plugins.php?page=admin_ui.php">user ID = <input type="text" name="twitter-id" value="<?php echo htmlspecialchars($options["twitter-id"]); ?>" size="45" /> <input type="submit" value="<?php _e('submit', 'vicuna_adaptor'); ?>" /></form></td>

これも,はてなスターが似てるのでコピーして改変してもいいでしょう.

/vicuna-adapors/vicuna-adaptor.php

こちらのファイルは実際にブログ上でどのように表示されるかを設定しています.

下の方のfunction icon_css()の前くらい

if ($options['twitter']) {
    function add_twitter_post() {
?>
    <li class="icon twitter post"><a href="http://twitter.com/home?status=@
<?php
$options = get_option('vicuna_adaptor');
echo $options["twitter-id"];
?>
%20(<?php the_permalink() ?>%20)"><img src="http://twitter.com/favicon.ico" alt="Twitterでコメントする" /></a></li>
<?php
    }
    add_action('entry_info', add_twitter_post);
    add_action('single_entry_info', add_twitter_post);
    add_action('page_entry_info', add_twitter_post);
}

できあがり^^

これで完了です.あとは管理画面からVicuna Adaptorを開くと,Twitterの項目が追加されているのでActiveにして, 自分のTwitter IDを登録しておけば,エントリ画面にTwitter用のボタンが表示されます.

ボタンを押すと,ログインしているTwitterの画面が開き,発言欄に「@twitter-id (http://aaaa )」という内容が 入っているのでそのまま何か書いて投稿すればOK!

さらに良くするなら,Twitterの画面に飛ばさずにAjaxでやるのがスマートだな.時間があれば考えてみたいけど, Ajaxわかんねーw