[全体] [技術メモ] [blog製作記録] 各一覧の該当ページへ

ブログ革命(プチ)2

[技術メモ/ blog製作記録] 2008年7月14日(月曜日) 19:32

概要

まだ名前をつけていないのですが、以下のコードを挿入することで、WordPressに「指定記事を含む各種リストのページへ飛べる」機能を追加できます。例えば、検索エンジン等から単体記事に辿り着いたとします。前後の記事も見たくなりますよね?しかし、標準機能では前後1記事ずつしか辿れません。「リスト」には飛べないのです。
一覧へ

ちょこっと改良

ブログ革命(プチ)のコードがちょこっとだけまともに。
追記 後日プラグイン化できました
コアファイルを直接書き換えている点はまだそのまま(ノ∀`)ですが、
記事などから自由に飛べるリストの種類が強化されました。(なーんて、SQL文をちょこっと削っただけですが)
全時系列リストに加え、カテゴリー別リストやアーカイブリスト、検索結果リスト等に飛べるようになりました。
飛びたいリストのURLに「pagewith=ポストID」を付加するだけで、その記事が含まれるリストのページに飛びます。

wordpress 2.5.1
query.php の1426行目に以下を挿入
※追記 WordPress2.6 では 1447行目

		//rtype
		//paged定が無くpagewith指定があれば
		if (!$_GET['paged']) {
			$pagewith = ereg_replace('[^0-9]+','',$_GET['pagewith']); //ごみを取る
			if ($pagewith) {
				$pagewithby = "AND wp_posts.ID>$pagewith";
				$prerequest = " SELECT COUNT(*) as postCounter FROM $wpdb->posts $join WHERE 1=1 $where $pagewithby $orderby";
				$this->prerequest = apply_filters('post_counter_request', $prerequest);
				$this->postposition = $wpdb->get_results($this->prerequest);
				//$paged $limit作り直し
				$paged = floor( $this->postposition[0]->postCounter / $q['posts_per_page'] ) + 1;
				$pgstrt = ($paged -1) * $q['posts_per_page'];
				$q['paged'] = $paged;
				$limits = 'LIMIT '.$pgstrt.','.$q['posts_per_page'];
			}
		}

同、link-template.php の611行目に以下を挿入
※追記 WordPress2.6 では 624行目
なお、コレは前回と全く同じコード

	$request = remove_query_arg( 'pagewith' );

これで、後はスキン側でインターフェイスを用意するだけで、理想的なナビゲーションに加工できるはずですヽ(・∀・)ノ

使用例

今回の拡張で、リストURLに「pagewith=ポストID」を付加することで、ポストIDの記事を含むページが自動的に選択されます。
たとえば、本ブログの87番記事の場合。(なお、この記事への通常のリンクは http://www.denkasi.com/blog/?p=87 です。)

全時系列リストの87番記事を含むページへは

http://www.denkasi.com/blog/?pagewith=87#post-87
との記述になり、(本記事を書いている現在は)6ページ目へ飛びます。

同カテゴリリストの87番記事を含むページへは

http://www.denkasi.com/blog/?cat=20&pagewith=87#post-87
との記述になり、3ページ目へ飛びます。

2008年5月のアーカイブリストの87番記事を含むページへは

http://www.denkasi.com/blog/?m=200805&pagewith=87#post-87
との記述になり、2ページ目へ飛びます。

語句’IE’で検索した結果リストの87番記事を含むページへは

http://www.denkasi.com/blog/?s=IE&pagewith=87#post-87
との記述になり、2ページ目へ飛びます。

実装はテーマ(スキン)次第となりますが、87番記事単体ページに、色々付加することで、直感的なナビゲーションが構築できるはずです。

※Macだと(FireFox3、Safari3で確認)パーマリンクを設定している場合 #post-87 の部分がキャンセルされてしまうようです。

Comments (3)

3件のコメント