「WordPress」タグアーカイブ

WordPress2.6のリビジョン管理を無効にする方法

WordPress 2.6から、投稿記事の履歴が無限に保存されるようになりました。この機能は、何度も書き換えた後に記事を元に戻したいとき、大いに役に立ちます。特に、複数人でWikiのように編集する使い方では、変更箇所を人目で把握できるため重宝します。

しかし、日記やコラムを書く用途に、一人で運用している場合はどうでしょうか?過去の変更箇所など、全く参照しない人が多いような気がします。そういう方には、このリビジョン管理は無用の長物。データベースを圧迫するだけの厄介物です。そこで、この機能を思い切って停止させてしまいましょう。

方法はシンプル。wp-config.phpに以下の定義を追加してください。1代限りのオートセーブ以外は停止します。追加場所はwp-settings.phpを読み込む前にしましょう。wp-settings.phpではWP_POST_REVISIONS未定義の場合、リビジョン管理を有効にしようとするからです。

define ('WP_POST_REVISIONS', false);

この定義は上記以外にもオプションがあります。必要に応じて使い分けてください。

Revision Management (codex.wordpress.org)

WP_POST_REVISIONS:

  • true (default), -1: 全リビジョンを保存
  • false, 0: リビジョン保存停止 (1代限りのオートセーブは除外)
  • (int) > 0: int数分のリビジョンを保存(+オートセーブ1代)。古い履歴は自動削除。

他の方法としては、wp-content\pluginsフォルダに次のような内容のプラグインをインストールすればOKです。ただし、公式アナウンスではないため非推奨です。

 <?php
/*
Plugin Name: no Revision Management
Plugin URI: http://etwas.wolfish.org/blog/2008/07/17/2008071701/
Description: Remove 'wp_save_post_revision' action.
Author: MadHyde
Author URI: http://etwas.wolfish.org/
*/

remove_action( 'pre_post_update', 'wp_save_post_revision' );
?>

WordPressは使いやすく機能追加も活発な反面、新機能のON/OFFを制御できる管理画面が未整備なのが残念ですね。

2008.07.27追記 - 最大履歴数も指定できるプラグインが登場しました。 Revision Control (WordPress.org)

WordPress2.5.1のLightBox不具合を修正する

WordPress2.5になってから、メディアアップローダがAjaxライクなものに変更されました。しかし、この新アップローダを使って画像を貼り付けるとLightBox系スクリプトに不具合が出ます。画像のタイトルが表示されません。そこで修正方法をここに記しておきます。

この問題は、リンクタグaにtitle属性が付与されなくなったことが原因。LightBoxはaタグのtitle属性を読み込んで画像の説明に使っています。以下修正箇所。

//wp-admin\includes\media.php
function get_image_send_to_editor($id, $alt, $title, $align, $url='', $rel = false, $size='medium') {

	$html = get_image_tag($id, $alt, $title, $align, $size);

	$rel = $rel ? ' rel="attachment wp-att-'.attribute_escape($id).'"' : '';

	if ( $url )
//		$html = "<a href='".attribute_escape($url)."'$rel>$html</a>";
		$html = "<a href='".attribute_escape($url)."'$rel title='".attribute_escape($title)."')>$html</a>"; //Modified

	$html = apply_filters( 'image_send_to_editor', $html, $id, $alt, $title, $align, $url, $size );

	return $html;
}

ちなみにaタグから消えたtitle属性はimgタグに移っていました。こちらは構文的に存在OKなので書き換えていません。LightBox系スクリプトが完全動作しなくてお困りの方は試してみてください。

願わくば、次の更新で修正されていますように…。

WordPress、タグとカテゴリの相違点とは?

WordPress2.3のタグに関するお話です。私の思うタグとカテゴリの特徴は次のようなものでした。

カテゴリは階層構造を持ち1つのエントリーは1カテゴリのみに属す。タグは階層構造を持たず、1つのエントリーは複数のタグに属す。

しかし、WordPressでは1つのエントリーに複数のカテゴリーを与えることができます。もはや、この状態はタグの使い方と同じです。

そう言うわけで、この二つは非常に曖昧な関係。ただ名称が変わっただけと言う印象があります。もっとも、階層構造を持たない分、タグは劣化してると思わざるを得ないのですけどね。以上、使い慣れたカテゴリを放棄しタグの運用方法を模索している筆者でした。

蛇足ながら、検索すると私と似た考えの方もいるようです。

タグとカテゴリーの比較文化論 (うるめねっと技研 - Linux派 -)

[カテゴリー]

  • カテゴリーの数は比較的少ない
  • 階層化された分類になっている
  • 記事は1つのカテゴリーに属する
  • カテゴリー間の記事数は均等な方が美しい
  • カテゴリーは複数記事のサマリーのような名称になっている

[タグ]

  • タグの数は多い
  • タグ間の関係は特になく、フラットな構造になっている
  • 複数のタグの組み合わせで記事の内容を説明する
  • タグの使用回数は偏っている。やたら使われるタグと全然使われないタグが出て来る
  • タグには標準的なキーワードが使われる

WordPress2.3の同一タグが増殖する

WordPress2.3のタグには日本語で使用していると不具合出ることがあります。タグはカテゴリと同様に「タグ名」と「タグスラグ」という値を持っています。しかし、この双方の値が異なるとき、入力した日本語タグが増殖してしまうのでした。

日本語タグの増殖

例えば、タグ名「コミック」、タグスラグ「comic」にしていたとしましょう。このとき、投稿時にタグ記入欄へ「コミック」と入力してしまうと、タグ名「コミック」、タグスラグ「コミック」と言う別IDのタグが作られてしまうのです。回避方法を見つけたので、改善されるまで下記方法で運用してみてください。

[対象者]
タグ名は日本語、タグスラグは英数字で運用したい人向け

[回避方法]
方法1:タグ記入欄に日本語タグ名を入力せず、タグスラグを書き入れる
方法2:タグ入力支援プラグインを使う(後述)

[プラグイン]
Advanced Tag Entry
タグスラグを基準にタグの追加と削除が可能
Simple Tags
重複タグを統合したり、タグスラグを編集したいときに使用。ただし、オプション機能のキーワード埋込は日本語が文字化けするので使わないほうがいい

その他、2.3のタグについて詳しく知りたい場合はps*wikiを参照してください。

タグ付け機能 (ps*wiki)

All in One SEO Packでウェブに優しいサイト構築を

All in One SEO Pack (uberdose 2.0)

WordPressはSEO的に問題のあるスクリプトです。HTMLソースを多少理解している人なら、すぐに気づくのではないでしょうか?

さて、どこが問題か?それは、1つの記事が複数のURIから導き出せる事です。記事別エントリーだけが検索エンジンにインデックスされるのは喜ばしい事です。検索して来てくれた人も、すぐに目的のページを閲覧できます。しかし、カテゴリや月別アーカイブをインデックスされてしまったらどうなるでしょう?記事が増えるにつれアーカイブ内の位置がずれていきます。検索で辿り着いた人は、案内されたページに該当記事を発見できず、後続のページを検索する手間を強いられます。

そう言う訳で最低限やっておくべきことは、カテゴリ別、月別アーカイブをインデックスさせない事です。このAll in One SEO Packは、HTMLソース内に以下のタグを挿入して必要なページだけを検索エンジンに見てもらうようにしてくれます。

<meta name="robots" content="noindex,follow">

また、このプラグインはタイトル出力方法の変更やキーワード挿入も可能にしてくれます。 複数の対策を施したい人は導入を検討してみてください。

ただし、rss feedが検索エンジンにインデックスされる問題は解決しません。こちらはrobots.txtでの対応となります。先のアーカイブインデックス問題も、実はこちらだけで対策出来ます。robots.txtに以下の文を記述して、ルートディレクトリに置いておきましょう。例は「全ての検索エンジンにfeedとアーカイブのインデックスを許さない」という記述です。

User-agent: *
Disallow: /foo/rss-feed/
Disallow: /foo/archive/

この他にAll in One SEO Packはタイトルの表示方法等も設定出来ますので、訪問者が見やすいように修正しておくといいでしょう。