WordPressMU:カテゴリ毎にテンプレートを切り分ける

2007年1月18日 (木曜日) - 19:19:37 by webmaster

WordPressMUを使ってサイト構築をするにあたり、sandboxを使うというのは前回書いたけれど、それだけじゃやっぱり足りない。
カテゴリ内記事の一覧表示をさせる際に、どうしてもデザイン変更だけじゃ対応出来ない(わけじゃないがやりたくない)のて、カテゴリ毎にテンプレートを切り分けたい(ページテンプレートを使い分けるように)。

カテゴリ名とテンプレートを連結コントロールするオプション画面まで作るのは面倒なので以下は実行環境のみ。

<?php
/*
Plugin Name: WP-category-template
Plugin URI: http://blog.mikke-mon.com/
Description: Enable using 'category-template'
Version: 1.0
Author: decama
Author URI: http://blog.mikke-mon.com/
*/

class WP-category-template
{
    function template_redirect() {
        global $wp_query;

        if ( is_category()) {
            $cat = $wp_query->get_queried_object();
            if ( file_exists(TEMPLATEPATH . "/category_{$cat->category_nicename}.php")) {
                $template = TEMPLATEPATH . "/category_{$cat->category_nicename}.php";
                apply_filters("category_template", $template);
                include($template);
                exit;
            }
        }
    }
}
$myplugin = new WP-category-template();
add_action('template_redirect', array(&$myplugin, 'template_redirect'));
?>

あとは、category_nicenameにマッチするテンプレートファイルを用意すればいい。

ちなみに、WordPressMUでは管理ページでcategory_nicenameの編集が出来なくなっている。
任意のcategory_nicenameを持つカテゴリを作成するには、以下の手順でカテゴリを追加すればいい。
現在の所category_nicenameはカテゴリ作成時にカテゴリ名から生成されているので、

  1. 任意のcategory_nicenameでカテゴリを新規作成
  2. カテゴリの編集で表示したいカテゴリ名に変更

すればいい。
(なんでcategory_nicenameにアクセスさせないようにしたんだろ?)

Leave a Reply

XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>