前回の自作テーマでは自分のブログで Autopagerizeが動作しなかったのですが、今回の2代目テーマでは何故かAutopagerizeが動作するようになってしまいました。
AutoPagerizeは通常そのサイトのSITEINFOというものを作ってそれを登録する(共有する)ことをしないと、そのサイトで動作させることが出来ないのですが…そういう一連の作業をしなくても、一定の条件が整えば自分のサイトでもAutoPagerizeが動くみたいです。
AutoPagerizeってGoogle検索するときや芸能人のブログを上からダラダラ見るときなんかはとっても便利なのですが…自分のブログで動作しちゃうとうっとうしいんですよね。自分のブログは検索エンジンから来てくれる人が多いので、動作しなくても良いかと思ったり。
前のテーマでは動かなかったAutoPagerizeが今回どうして動くようになったのか、動作させないようにするにはどうしたらよいかを考えてみました。
原因究明までに3時間かかりました(汗)
あーでもない、こーでもない…
とググってようやくヒットしたサイトがこちら。
Wordpress のブログで、個別ページのときはコメントが流れてしまったりするので、機能させたくないんです。調べてみると、Microformat の hentry というクラスに AutoPagerize が反応しているらしい。そこで、個別ページでは hentry クラスを除くフィルターを作りました。
WordPress の個別ページで AutoPagerize を無効にする方法(テーマを書き換える) | monta / diary
![]()
こちらのブログの通りやったら、ちゃんとAutoPagerizeが動作しなくなったのですが・・・自分でこの「hentryクラス」を追加した覚えがないのに…。ということで自分のブログ記事を表示させて、ソースを確認したら「hentryクラス」がありました
(;^ω^)
自分のブログを表示させたときに勝手に割り振られるこの「hentryクラス」は…index.phpやsingle.phpなどのループ部分に追加したWordPressのテンプレートタグに起因します。
</div><!-- #nav-above -->
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-meta">
<?php twentyten_posted_on(); ?>
上記はWordPressの公式テンプレートTwenty Tenの「loop-single.php」にあるループ部分の一部抜粋です。このループ部分の記事を取り囲むdivタグには「<?php the_ID(); ?>」と「<?php post_class(); ?>」二つの独自テンプレートタグがくっついてますね。最初の「<?php the_ID(); ?>」は、WordPressの各記事に唯一一意の記事番号を割り振ってくれるモノ。後半の「<?php post_class(); ?>」はその記事がどんな種類の記事か分類を表すクラスをつけてくれるモノです。
Memo
- 「<?php the_ID(); ?>」・・・各記事に一意の記事番号をくっつける
- 「<?php post_class(); ?>」・・・各記事にそれがどんな種類の記事か分類を表すクラスをつける
「<?php post_class(); ?>」ですが、これがあると必ずhentryクラスがつくことに気がつきました。前の初めて作ったテーマには両方ともつけなかったのですが、今回は両方のテンプレートタグを入れたんですよね。AutoPagerizeが動作してしまったのはこれが原因だと思います。
WordPressで作られた有名なブログのソースを色々と確認したんですが、ループ部分にこのテンプレートタグを入れてない人が多かったんですよ。公式テーマでも配布する予定のテーマでもない個人で使うテーマなので、無理にこのテンプレートタグを入れる必要がないかなぁ….というそんな結論に達しました。
最終的には「<?php the_ID(); ?>」だけは入れましたが、「<?php post_class(); ?>」は勝手にhentryクラスが付くので削除しました。これによって自分のブログでAutoPagerizeが動作しなくなりました( ´Д`)=3 フゥ
コメント