Posted by をかもと at 2009年1月19日 月曜日

「逆光は勝利」「世はなべて三分の一」「ピーカン不許可」「頭上の余白は敵だ」

と言うわけで、投稿やページにアップロードされた画像ファイルを抽出し、サムネイルで一覧表示する WordPress 用プラグイン wp-kougabu を導入しました。
このプラグインによるサムネイルの一覧表示は こちら

で、このプラグイン導入したページをページ分割しようと思ったんですが、私が使っているテーマ(ほぼ自作)はページ分割に対応していないことが判明。
慌てて、テンプレートタグ wp_link_pages() を追記したんですが、これが吐き出す (X)HTML が、気にくわない。
カレントページ番号に対して CSS でスタイル指定しづらいマークアップになってしまうので、ゴニョゴニョして何とかしました。

wp_link_pages() が吐き出す (X)HTML は以下のような感じです。

<p>
	1
	<a href="http://example.com/gallery/2/">2</a>
	<a href="http://example.com/gallery/3/">3</a>
	<a href="http://example.com/gallery/4/">4</a>
	<a href="http://example.com/gallery/5/">5</a>
</p>

これだと、カレントページ番号のみ(この例の場合では "1")を囲むエレメントが無いため、カレントページ番号に対して CSS でスタイルを指定できない。

なので、以下のような (X)HTML を書き出すようにしてやりました。

<p class="navigation">
	<span class="page-numbers current">1</span>
	<a class="page-numbers" href="http://example.com/gallery/2/">2</a>
	<a class="page-numbers" href="http://example.com/gallery/3/">3</a>
	<a class="page-numbers" href="http://example.com/gallery/4/">4</a>
	<a class="page-numbers" href="http://example.com/gallery/5/">5</a>
</p>

カレントページ番号にもエレメント ( span.current ) が割り当てられるので、CSS でスタイルを簡単に指定できますね :P

これを実現するためには、テンプレートに以下のように記述してやれば良いです。

<?php
$link_pages = wp_link_pages(array('before' => '', 'after' => '', 'next_or_number' => 'number', 'echo' => '0'));
if ( $link_pages != "" ) {
	echo "<p class=\"navigation\">\n";
	if ( preg_match_all("/(<a [^>]*>[\d]+<\/a>|[\d]+)/i", $link_pages, $matched, PREG_SET_ORDER) ) {
		foreach ($matched as $link) {
			if (preg_match("/<a ([^>]*)>([\d]+)<\/a>/i", $link[0], $link_matched))
				echo "<a class=\"page-numbers\" {$link_matched[1]}>{$link_matched[2]}</a>\n";
			else
				echo "<span class=\"page-numbers current\">{$link[0]}</span>\n";
		}
	}
	echo "</p>\n";
}
?>

コメント

  • twitter 2009年1月19日 月曜日 11:30 PM

    ブログにエントリ: wp-kougabu 導入 – 「逆光は勝利」「世はなべて三分の一」「ピーカン不許可」「頭上の余白は敵だ」と言うわけで… http://tinyurl.com/a4h88p [twicco.jp @wokamoto ]

  • delicious 2009年1月22日 木曜日 3:47 PM

    私が使っているテーマもページ分割に対応していないことが判明したので、こちらを参考にさせていただきました。

  • delicious 2009年1月22日 木曜日 5:32 PM

    wp-kougabu ページ分割方法

  • hatena bookmark 2009年4月12日 日曜日 11:10 PM

    私が使っているテーマもページ分割に対応していないことが判明したので、こちらを参考にさせていただきました。

コメントする


Twitter ID を入力すると新しいコメントがあった際、 @dogmap_jp が、あなた宛に@リプライでお知らせします。

入力いただいたメールアドレスから、TwitterGravatar に登録されているアイコンを表示します。
(メールアドレスは公開されません)

改行と段落タグは自動で挿入されます。メールアドレスは表示されません。

:mrgreen: :-P :-D :-) ;-) :-o :-| :-( 8-O :-? 8-) :twisted: :evil: :oops: :roll: :cry: :lol: :-x more »