16 March 2010
管理画面の投稿画面にカテゴリーを選択するリストボックスがあり、いったんチェックをつけたカテゴリーは次回から上に表示される。CMSとして利用する場合はカテゴリーに2、3の階層を持たせることがほとんどなので、これをやられるとあとからカテゴリーの階層がわからなくなって困る。
この並べ替えをしない方法。
/wp-admin/includes/meta-boxes.php の
function post_categories_meta_box() から
wp_category_checklist() を呼ぶ箇所で、
<?php wp_category_checklist($post->ID, false, false, $popular_ids) ?>
となっているところに、引数を追加するとよい。
<?php wp_category_checklist($post->ID, false, false, $popular_ids, '', false) ?>
6番目のパラメータがチェックされているカテゴリーを上にもってくるかどうかのフラグである。デフォルトでtrueとなっているのを、falseに指定する。5番目のパラメータは不明だが、デフォルトのNULLを指定しておく。こうすることで、カテゴリーのリストが常に同じ順番で表示される。
このようにWordPressの本体コードを修正すると、バージョンアップ時に上書きされてしまうのでおすすめできない。パラメータがあるということは、どこかに設定画面があるのだろうか?
とりあえず自分用にメモ。
11 March 2010
WordPress 2.8よりbody 要素用の新テンプレートタグ body_class が加わっている。テーマで以下のように書くことで、
<body <?php body_class(); ?>>
homeの場合は、<body class=”home blog”>
singleページの場合は、<body class=”single postid-1″>
というように表示しているページごとにクラスが指定される。これによってページごとのスタイルを指定したり、JavaScriptでメニューの状態を変更したりすることができる。
今までは is_single()ならclass=”single”・・・と必要に応じて自分で指定していたので、いつのまにかとても便利になっていた。defaultテンプレートを見ていて気がついた。このテーマもちゃんとバージョンアップしてるんだな。たまには見直さなければ。
属性の一覧は、テンプレートタグ/body class - WordPress Codex 日本語版を参照。
10 March 2010
WordPressでは、テーマによって構成ファイルが異なる。
最小限で必要なファイルは以下の2つだ。
・style.css
・index.css
これだけ用意しておけは、それなりに表示される。
あとは必要に応じてカスタマイズしながら増やしていけばよい。
5 March 2010
アーカイブページを作成するには、テンプレートにpage-archives.phpというファイルを用意するとよい。ここに月別アーカイブを表示するには以下のように記述しておく。
<?php
/*
Template Name: Archives
*/
?>
<?php get_header(); ?>
<div id="content">
<h2>月別アーカイブ</h2>
<?php
$defaults = array('type' => 'monthly', 'limit' => '', 'format' => 'html', 'before' => '', 'after' => '', 'show_post_count' => true);
echo '<ul>';
wp_get_archives($defaults);
echo '</ul>';?>
</div>
<?php get_footer(); ?>
この場合アーカイブページのURLは、
ブログのURL/archives/
となる。
18 February 2010
最近のWordPressに搭載されいているリビジョン管理は、編集履歴を残す機能である。CMSとして複数人数で利用している場合には便利なものの、個人ブログで必要にかられることはあまりない。編集履歴はMySQL上でwp_postsとして保存されるため、投稿IDがどんどん増えていくのも気になる。
このリビジョン管理を無効にすることができる。wp-config.phpに以下を記述しておくとよい。
define('WP_POST_REVISIONS', false);
記述する位置は、「// 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。」の直前あたりだ。第2引数がfalseの場合はリビジョンが無効となる。ここに数値を指定すると、履歴を残す世代を指定することになる。
21 January 2010
Wordpressが自動で出力してくれるFeedは、全文か抜粋かを選ぶだけのシンプルなものとなっている。当ブログではこれで十分であるが、フォトログだったらやはりFeedに画像なんかを表示したいものだ。いろいろ調べているうちに、Feedの内容はテーマやプラグインでカスタマイズできることが分かった。
以下はテーマでatomの出力内容を変更する例。
remove_action('do_feed_atom', 'do_feed_atom', 10, 1);
automatic_feed_links(false);
function custom_feed_atom( $for_comments ) {
$template_file = '/feed-atom' . ( $for_comments ? '-comments' : '' ) . '.php';
$template_file = ( file_exists( get_template_directory() . $template_file )
? get_template_directory()
: ABSPATH . WPINC
) . $template_file;
load_template( $template_file );
}
add_action('do_feed_atom', 'custom_feed_atom', 10, 1);
まずfunctions.phpで、本来のatom出力である”do_feed_atom”をremove_actionで停止し、独自の関数をadd_actionで再定義する。
次に、/wp-includes/feed-atom.phpを同じファイル名のままテーマフォルダにコピーする。中身を見るとFeedを出力するテンプレートとなっている。Feedの本文はthe_excerpt_rss();前後になるので、このあたりに画像を表示するなり手を加えるとよい。
さらに、同じ処理をrdf、rss、rss2に関しても行う。
14 January 2010
WordPressをインストールする際にMySQLに作成されるテーブルのほかに、自作プラグインでもテーブルを作成することができる。アクションフックのregister_activation_hookを定義しておくとプラグインが有効になった際に関数が呼ばれるので、ここでテーブルを作成する。テーブル名にはWordPressの接頭辞を使用すること。
以下は、wp_sampleというテーブルを作成する例。
function myActivation() {
global $wpdb;
$table_name = $wpdb->prefix . "sample";
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "create table " .$table_name ." (
ID bigint not null auto_increment,
`name` varchar(64) NOT NULL,
`furigana` varchar(64) default NULL,
`url` varchar(64) default NULL,
primary key(ID)
)";
$results = $wpdb->query($sql);
}
}
register_activation_hook(__FILE__, 'myActivation');
プラグインが無効化された際の処理は以下を使用する。
register_deactivation_hook(__FILE__, 'myDeactivation_');
12 January 2010
ショートコードとは、記事中に記述することで実行させるプラグインのことだ。有名なショートコードのプラグインに、ソースコードを表示するためにここでも使っている「SyntaxHighlighter Plus」がある。
ショートコードは以下のように記事中に記述する。
[hello color="red"]ほにゃらら[/hello]
プラグインでは、add_shortcodeで定義した関数を用意する。下の例では、赤い文字で”ほにゃらら”と表示する。この場合の出力はechoではなく、returnとすることに注意したい。
$attsの引数で、属性値を受け取ることもできる。
function showhello($atts, $content) {
extract( shortcode_atts( array('color' => ''), $atts ));
return '<div style="' .$color .'">' .$content .'</div>';
}
add_shortcode('hello', 'showhello');
プラグインでなく、テーマで使用することもできる。
12 October 2009
WordPress2.8.4にアップデートした後にひっかかったのは、画像ファイルのアップロードだ。
投稿画面で「画像の追加」アイコンをクリックしてもウンともスンともいわなくなってしまった。よく見るとFireFoxでJavaScriptのエラーが大量に出ている。とりあえずプラグインをひとつづつ無効にしていきながら、Simple Tagsでひっかかっていることまでつきとめた。
Simple Tagsを最新バージョンにアップデートしてみるも直らない。このような有名なプラグインが最新バージョンに対応していないはずはないと思った。そこでふと思いついてFireFoxをIEに変えると、問題ないことが分かった。FireFoxがだめなのか?と2、3日はブログの更新をIEで行っていた。またふと思いついて、FireFoxを最新バージョンにしたら正常に戻った。
何事も最新バージョンに保たないと思いどおりにいかないものだ。
8 September 2009
新しいバージョンがリリースされると、ダッシュボードに「WordPress *.* が利用可能です ! アップデートしてください。」というメッセージが表示される。
v2.8がリリースされた際には、自動アップデートに不具合があるとの情報があらかじめ出回っていたため、ファイルを手動でFTPでアップせざるを得なかった。今回2.8.4にアップデートする際に初めて、自動アップデートを行った。
「WordPress 2.8.4 が利用可能です ! アップデートしてください。」のリンクをクリックすると、ウィザード形式で作業が始まり、FTP情報をきかれたところで、アカウントとパスワードを入力する。あとは自動的にファイルが更新され、アップデートが完了する。次回、ログインのタイミングでデータベースのアップデートが行われる。
なんと手軽!
今回はマイナーバージョンアップのため、見た目には違いがわからない。