Petit Staticize
これは?
WordPress1.5以上で動作する、投稿した記事を「月間」「記事単体」「カテゴリ」としてまとめてHTML化することができるスクリプト。
動的生成しかできないWordPressでHTMLファイルを扱いたい人向けのスクリプト。
Petit Staticizeのダウンロード
このスクリプトを使用することで生じた損害に対する責任は一切負いません。DBのバックアップは事前にしておくように。(DBに書き込むような真似は一切してないので大丈夫だとは思うけど)
使い方
- 設定項目を自分用に弄る
- ログを保存するディレクトリを作成し、書き込み属性を付ける
- 静的生成用のテーマを「static」という名前で作成する
- テーマ内で使用している関数を以下の通りに変更する
- get_header => get_header_static
- get_footer => get_footer_static
- get_sidebar => get_sidebar_static
- wp-admin/menu.phpを以下の通りに変更する
17行目〜
$menu[45] = array(__('HTML生成'), 0, 'makestatic.php'); if ( get_option('use_fileupload') ) $menu[50] = array(__('Upload'), get_settings('fileupload_minlevel'), 'upload.php');50行目〜
$submenu['makestatic.php'][5] = array(__('HTML生成'), 0, 'makestatic.php'); - wp-adminフォルダにmakestatic.phpとmakestatic_lib.phpをアップロードする
- 管理画面から「HTML生成」をクリックして実際に使用する
設定項目の説明
ログを保存するディレクトリ
$arcdir_m = '../diary/';
$arcdir_s = '../diary/log/';
$arcdir_c = '../diary/cat/';
$arcdir_im = '../diary/';
$arcdir_mは月間、$arcdir_imは月間インデックス、$arcdir_sは記事単体、$arcdir_cはカテゴリで、それぞれ生成した場合にファイルを保存するディレクトリとなる。
相対パスで指定する場合は、上記のようにwp-adminフォルダからの相対パスを指定する。
テンプレートの選び方
$template_select_style = true;
trueならWordPress標準の優先順位に従ってテンプレートを検索。falseなら、月間ログ生成時はdate.php、同インデックスはdate_index.php、記事単体ログ生成時はsingle.php、カテゴリログ生成時はcategory.phpをそれぞれ読み込む。
いずれの場合も、最終的に見つからなかったらindex.phpを読み込む。
カテゴリログ生成オプション
$recent_post_num = 6;
$cat_what_to_show = 'posts';
$cat_posts_per_page = 10;
$ignr_cat = array( 1, 2, 3 );
$recent_post_numは設定された数だけ最新の投稿記事のカテゴリを抽出する。生成時にいちいち投稿記事のカテゴリを確かめて選択してから生成する手間を省くためのオプション。
$cat_what_to_showと$cat_posts_per_pageは、カテゴリログを生成する際に分割する方式になる。$cat_what_to_showがpostsなら投稿記事数を、dayならば投稿記事の日数を、それぞれ$cat_posts_per_page分だけ取得して1ページとして生成する。
$ignr_catにはカンマ「,」で区切ることで、生成時に生成を行わないカテゴリを指定することが出来る。上記の例ならカテゴリIDが1から3のカテゴリは、何があっても生成されない。
正規表現による文字列置換
//常に行う置き換え動作用
$default_search = array( );
$default_replace = array( );
//月毎
$date_search = array( );
$date_replace = array( );
//月毎インデックス
$datei_search = array( );
$datei_replace = array( );
//記事単体毎
$single_search = array( );
$single_replace = array( );
//カテゴリ毎
$category_search = array( );
$category_replace = array( );
****_serachで指定した文字列を探して、****_replaceで指定した文字列に置き換える。
//記事単体毎
$single_search = array(
"($siteurl\/(index\.php)?\?p=([0-9]+))",
);
$single_replace = array(
"$siteurl/$2.html",
);
この例は、http://www.hoge.com/index.php?=431などといった動的なURLを全て静的なものに変換することになる。Perl互換の正規表現を使用しているので、文法はそちらを参照すること。
なお、置き換え動作は、まずdefault_****が行われてからそれぞれの動作を行うようになっている。
テーマ作成の際の注意
テーマ内でrequire_onceかinclude_onceを使用していると、二つ目以降のHTMLファイル生成時に反映されないので、それらは全て_onceを抜かした状態にすること。
テーマ内で静的生成かどうか判別したい場合は
if( isset( $output_type ) )
このようにすればよい。月間、記事単体、カテゴリなどで分岐したいならば以下のようにする。
switch( $output_type ) {
case 'date' : ...
case 'date_index' : ...
case 'single' : ...
case 'category' : ...
}
サポート
掲示板のPetit Staticizeスレッドにて。感想・要望・バグ報告は大歓迎。
更新履歴
- 2004-05-03 ver1.5.2 月間ログ生成時に投稿が一つ抜ける不具合を修正
- 2004-02-25 ver1.5.0 WordPress1.5用として一応正式リリース