WordPressをAutoPagerizeとはてなスターに対応させる


前のテーマは最初からAutoPagerizeに対応してたので気にしてなかったんだが、テーマ変えてから効かなくなってたので対応させた。ついでにはてスタも復活させた。

まずAutoPagerize対応。wp-includes/link-template.phpのfunction next_posts_link部分とfunction previous_posts_link部分に、rel="next"を追加する。

function next_posts_link($label='Next Page »', $max_page=0) {
        global $paged, $wp_query;
        if ( !$max_page ) {
                $max_page = $wp_query->max_num_pages;
        }
        if ( !$paged )
                $paged = 1;
        $nextpage = intval($paged) + 1;
        if ( (! is_single()) && (empty($paged) || $nextpage <= $max_page) ) {
                echo '<a rel="next" href="';
                next_posts($max_page);
                echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label) .'</a>';
        }
}

↑こんな風に。echo ‘<a rel="next” href=”'; の行だけ変更すればおk。telnetなりSSHなりで入って直接編集するなり、ローカルで編集してFTPするなりお好きなように。あとはテーマ側の話なので、Blogにログインして、テーマ編集。

テーマによって多少違うので一概には言えないのだが、WordPressのテーマは大体以下のような感じになっていることが多いはず。

<?php get_header(); ?>
	<div id="content">
	<?php if (have_posts()) : ?>
		<?php while (have_posts()) : the_post(); ?>
			<div class="post" id="post-<?php the_ID(); ?>">
				記事
			</div>
		<?php endwhile; ?>
		<div class="navigation">
			<div class="alignleft"><?php next_posts_link('&laquo; Previous Entries') ?></div>
			<div class="alignright"><?php previous_posts_link('Next Entries &raquo;') ?></div>
		</div>
	</div>
	<?php endif; ?>
	</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

細かいところは違っても、おそらくindex.phpはこんな風だろう。AutoPagerize対応にするには、rel="next"の他に

<?php get_header(); ?>
	<div id="content">
	<?php if (have_posts()) : ?>
		<div class="autopagerize_page_element">
			<?php while (have_posts()) : the_post(); ?>
				<div class="post" id="post-<?php the_ID(); ?>">
					記事
				</div>
			<?php endwhile; ?>
			<div class="navigation autopagerize_insert_before">
				<div class="alignleft"><?php next_posts_link('&laquo; Previous Entries') ?></div>
				<div class="alignright"><?php previous_posts_link('Next Entries &raquo;') ?></div>
			</div>
		</div>
	</div>
	<?php endif; ?>
	</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

whileとnavigationを挟むようにを挿入、navigationのclassにautopagerize_insert_beforeを追加。これでうまくいくはず。

次にはてスタ対応。これはすげー簡単で、ヘッダ部分に以下のコードをコピペるだけ。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
Hatena.Star.Token = 'トークン';
</script>
<script type="text/javascript" src="http://s.hatena.com/js/Hatena/Star/EntryLoader/WordPress.js"></script>

トークンははてスタのサイトで外部ブログを登録した時に出てくる英数字。勝手に解析していい感じに動いてくれるはず。