他のブログでも取り上げられているWordpress標準のプラグイン「Akismet」。コメントスパムの投稿を阻止するプラグインなんですが、改めてその精度には驚かされます。
無料のブログサービスなんかを利用していてもコメントスパムは後を絶たず、様々な国から無作為に送信されているようですが、WordPressも例外ではありませんよね。
以前当方は「Akismet」を利用していなかったのですが、他のブログでの評価を見て半信半疑で利用してみたところ、私の場合では全てのコメントスパムを阻止してくれています。
多くの無料で使えるブログサービスでこれほどのコメントスパム阻止をしてくれるツールは「Akismet」以外みたことありませんでした。
FC2などのブログもこれほどの精度あるスパム防止システムを導入すれば、もっとユーザーから喜ばれそうなのに、なんて思ったりもしました。
カスタムフィールドを活用することで様々な表現が可能になります。「query posts」タグを使うことでWordPressループ内において、表示される投稿を変更できますが、今回はカスタムフィールド情報の取得についてのメモ。
query_posts('meta_key=ABC&meta_value=DEF');
ここでは、キーABCのDEFの値を取得。表示したい内容を取得します。
また、「get_post_meta」関数を使うことで、どの投稿の、どのカスタムフィールドの値を取得するか指定します。
get_post_meta($post_id, $key, $single); ?>
・「$post_id」では「$post->ID」することで記事IDの取得。
・「$key」はカスタムフィールドのキー
・「$single」はtrueもしくはfalseを指定し、trueであった場合、文字列として返します。falseの場合には配列を返します。trueにすることで、例えばURLやイメージURL情報も取得でき、query_postsの指定によって表現させることが可能でした。
投稿やページの特定の記事でサイドバーを変化させるためには、「sidebar.php」ファイルで「if」文で分岐することで実装可能です。
「sidebar.php」ファイルを複数用意してget_sidebar()で呼び出す方法では投稿全体やページ全体で違う内容を表示させることは可能ですが、これでは特定の記事で変化させることはできません。
◆「sidebar.php」ファイル-「if」文による分岐(pageに対して)
if(is_page(ID)){
IDで指定したページに表示させたい内容;
}else{
それ以外のページ全体で表示させる内容;
}
また、複数のページで様々な内容のサイドバーを表示させたい場合には、「else if」でページIDの指定、表示させたい内容を書けば実装できます。
投稿で実装するためには上記の「is_page」を「is_single」に変更し、投稿のIDを指定します。
また、「sidebar.php」内で書かなくても、複数のsidebar.phpを用意して、「page.php」や「single.php」内で「if」文による条件分岐でインクルードする「sidebar.php」を指定すれば実装可能です。
WP2.6以降、自動で投稿のリビジョン(投稿履歴)を保存する機能が備わったことにより、記事の状態を以前の状態に戻すことが用意になりましたね。
しかし、バックアップとして活用できる反面、サーバー容量をその分必要とします。
不必要になったリビジョンを削除すればその分容量の節約にもなるかと思います。
そんな時に活躍するのがリビジョンを一括で削除できるプラグイン【Delete-Revision】。
●導入方法・使い方
- http://wordpress.org/extend/plugins/delete-revision/よりプラグインをダウンロードし解凍したのち、・・・/wp-content/plugins/にアップロード。
- 管理画面にログインして有効化します。
- 【設定】より【Delete-Revision】を選択し、【Check Redundant Revision】をクリック。
- 【Yes,I would like to delete …】をクリックすると全てのリビジョンが削除されます。
※導入後は【Delete-Revision】の画面での操作はたった2回のクリックのみ。非常に簡単です。
お気に入りのテーマを見つけても、ウィジェットに対応していないために使用することを諦めてしまうこともありますが、そんな場合でもちょっとしたカスタマイズでウィジェット対応にすることができます。
▼ウィジェット対応にする手順
- 【sidebar.php】を開き、下記ソースを追加。
- 【functions.php】を作成し目的のテーマにアップロード。
- 【functions.php】に下記ソースを追加。
<?php if ( !function_exists(’dynamic_sidebar’) || !dynamic_sidebar() ) : ?> <?php endif; ?>
<?php
if ( function_exists(’register_sidebar’) )
register_sidebar();
?>
以上でウィジェット対応となります。
この状態で表示させるとサイドバーのタイトルがh2で記述されています。
無駄なリスト表示を無くし、タイトルを変更するためには【functions.php】に下記を変更します。
<?php
if ( function_exists(’register_sidebar’) )
register_sidebar(array(
‘before_widget’ => ”,
‘after_widget’ => ”,
‘before_title’ => ‘<h3>’,
‘after_title’ => ‘</h3>’,
));
?>
<h3>と記述した部分がサイドバーのタイトルとなります。
