他の人のブログを色々と見て回りました。
なんか、ブックマークユーザー数が表示されている記事って、結構目につきやすいもんだな~と思い、
このブログでも設置してみることにしました。
これがゴール

さて、どこから手をつけようか
まず、このブログのテーマはtwentytwelveを親とした、子テーマを使用しています。
そして、子テーマには実は、style.cssとfunctions.phpの2つのみ。
つまり、content.phpやsingle.php等は一切触ってないんです。(理由? メンドウだから…。)
そうなると、actionやfilterをaddする方法のみで、実装する事が前提です。
addするポイントを探す。
まず、やりたい事は、「記事のタイトル」にはてなブックマークユーザー数の表示です。
記事のタイトルを表示しているものは、content.php内
<h1><?php the_title(); ?></h1>
です。となると、add_action もしくは add_filter でthe_title にフックさせることに。
その前に、はてなブックマーク数はどうやって表示させんの?
ぐぐって見ると、とりあえずそれっぽいものを発見。
この一覧に、wordpressが無い。。まぁ、movable typeでも同じだろうということで、タグをコピペ。
<a href="http://b.hatena.ne.jp/entry/<$MTEntryPermalink$>"> <img src="http://b.hatena.ne.jp/entry/image/<$MTEntryPermalink$>" alt="はてなブックマーク - <$MTEntryTitle$>" title="はてなブックマーク - <$MTEntryTitle$>"> </a>
あ、案外簡単だね。
<$MTEntryPermalink$> → get_permalink()
<$MTEntryTitle$> → get_the_title()
になればいいだけか。
ローカルでテストするまでもなさそうだ。というわけで、
さっそく実装してみましたが…
functions.phpに書いたコードは以下。
※注意※ 以下のタグは間違っています。
add_filter( 'the_title', 'hatena_add', 10, 2 ); function hatena_add( $title ) { global $post; $title .= '<a href="http://b.hatena.ne.jp/entry/' . get_permalink() . '">'; $title .= '<img src="http://b.hatena.ne.jp/entry/image/' . get_permalink() . '" alt="はてなブックマーク - ' . $post->title . '" title="はてなブックマーク - ' . get_permalink() . '" />'; $title .= '</a>'; return $title; }
で、表示させてみると….うーん。

グローバルメニューにやたら縦の余白が増えたな。。と思ったら、グローバルメニューにも、はてなブックマーク数が…。
参ったな~。でもそんなにこのブログのアクセスは無いから、そんなに参らないか。
ってことで、他の方法を考えながら、管理画面からブログの記事一覧を見てみたら…

おうっ。なんか記事のタイトルにはてなのブックマークタグw
いやー。これは参った。急いでさっきのタグは外そう。
どこかフック場所を間違ったな。で、まず整理した。
やりたいことは、
記事ループ内の記事タイトルのみに、フックさせる
ってことでぐぐってみたけど、よく分からない。
ってことで、the_titleを少し辿ってみることに。
辿った限りは、get_the_title()が怪しいかな。
wp-includes/post-template.php 102行目あたり
あ、なるほど。
if ( ! is_admin() ) {
管理画面以外に絞ればいいだけの話か。
でもこのままだと、まだグローバルナビにブックマークユーザー数が出てしまう。
どうやって、”ループ内の記事タイトルのみ”って条件分岐するんだろうか。
うーむ。分からない。
もっと調べていると、
add_filter( 'the_title', 'hatena_add', 10, 2 );
function hatena_add( $title , $id ) {
で、ループ記事のIDが取得できるっぽい。
なので、
print_r(get_post($id));
を挿入してデバッグしてみたら、
グローバルナビのpost_typeはnav_menu_itemみたいなんで、これなら条件分岐できるっぽい。
で、色々と試行錯誤をしてみた。そして分かったことは、
できない。 よーく考えてみた。
<h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
そっか。。。全く気づかなかった。
<?php the_title(); ?>
にフィルターをかけても、</a>タグで閉じられちゃうし。。。</a>の後、に入れたい。。
どう考えてもテンプレートさわらないと無理かな。。
うーむ、分からない。。。
続きは別の日にしよう。。
コメントを残す