面倒なカスタマイズ

WordPressをのんびりと更新続けてます。色々不具合もあって、苦労している部分も。

テーマ

色々弄るのが面倒になってきたので、ブログデザインについては既存のテーマをちょっと弄る程度にとどめておこうかと思います。テーマは次期標準テーマ候補と言われているSandboxを採用し、スキンはShades of Grayにしてみた。Sandboxの方は、サイドバーのみ変更した段階。Shades of Grayは文字が小さかったので、font-size を100%に変更。最終的には、自分のわかりやすいように、CSSを書き換えたいけれど、とりあえずは今のままで良いかと思ってます。

タグ関連

Advanced Tag Entry がちゃんと動いてくれず、タグスラッグが重複するバグのせいで、記事投稿時にタグを挿入することができなかったのだけど、Yuriko.Net » WordPress で日本語タグ重複問題解決パッチ案 のとおりパッチを適用してみたら問題なくタグ付けできるようになりました。

[php]if ( ” === $term = sanitize_title($term) )
return 0;
$where = $wpdb->prepare( “t.slug = %s”, $term );[/php]

という部分を

[php]if ( ” === $sanitized = sanitize_title($term) )
return 0;
if ( $taxonomy = ‘post_tag’ ) {
$where = $wpdb->prepare( “(t.slug = %s OR t.name = %s)”, $sanitized , $term );
} else {
$where = $wpdb->prepare( “t.slug = %s”, $sanitized );
}[/php]

と書き換えるだけ。

でも、コアファイルの書き換えだとバージョンアップする際に面倒。本体側で早く対応してくれないかな。

Wp-MixiPublisher

WordPress 2.5 になって動かなくなった Wp-MixiPublisher ですが、すぐにパッチを公開してくれた方が。Wp-MixiPublisher 2007/12/18 変更対応版の wp-mixipublisherRC2c.php を以下のように書き換えです。

[php] function executePublishToMixi($postId, $isModify=false) {
if(in_array($postId, $this->_publishedId)) {
return $postId;
}
$settingVO = $this->getWpSetting();
if(!$settingVO->getParam(‘user_id’)) {
return $postId;
}

$post = get_post($postId);

// 公開しない場合は終了
if($post->post_status != ‘publish’) {
return $postId;
}

// 1.0.0 RC2: XML-RPCリクエストの場合ディフォルト設定を優先する
if(defined(‘XMLRPC_REQUEST’) && XMLRPC_REQUEST) {
// ディフォルト設定が有効でなければ終了
if($settingVO->getParam(‘default’) != 1) {
return $postId;
}
// すでにある投稿で、Mixiに投稿していなければ終了
if(!$postObj->mixi_diary_id && $isModify) {
return $postId;
}
}else{
if($_POST[‘publish_mixi’] != 1) {
return $postId;
}
}

// 1.0.0 RC2: リクエストに利用するクッキーを既存のものからではなく、新しく作成する
$user = wp_get_current_user();
$cookies = USER_COOKIE.’=’.urlencode($user->user_login).’; ‘;
$cookies.= PASS_COOKIE.’=’.md5($user->user_pass);

$relative_path = preg_replace(‘/^’.preg_quote(ABSPATH, ‘/’).’/’, ‘/’, __FILE__);

$ping_url = get_settings(‘siteurl’) . $relative_path;
$parts = parse_url($ping_url);
$argyle = @ fsockopen(
$parts[‘host’],
$_SERVER[‘SERVER_PORT’],
$errno,
$errstr,
0.01);

if ($argyle) {
fputs($argyle, “GET {$parts[‘path’]}?” .
“post_id=” . $postId .
” HTTP/1.0rnHost: {$parts[‘host’]}rnCookie: {$cookies}rnrn”);
}
$this->_publishedId[] = $postId;
return $postId;
}

function saveHandler($postId) {
return $this->executePublishToMixi($postId, true);
}

function publishHandler($postId) {
return $this->executePublishToMixi($postId);[/php]

という部分を、

[php] function executePublishToMixi($postId, $isModify=false) {
if(in_array($postId, $this->_publishedId)) {
return false; //falseを返すように修正
}
$settingVO = $this->getWpSetting();
if(!$settingVO->getParam(‘user_id’)) {
return false; //falseを返すように修正
}
$post = get_post($postId);
// 公開しない場合は終了
if($post->post_status != ‘publish’) {
return false; //falseを返すように修正
}
// 1.0.0 RC2: XML-RPCリクエストの場合ディフォルト設定を優先する
if(defined(‘XMLRPC_REQUEST’) && XMLRPC_REQUEST) {
// ディフォルト設定が有効でなければ終了
if($settingVO->getParam(‘default’) != 1) {
return false; //falseを返すように修正
}
// すでにある投稿で、Mixiに投稿していなければ終了
if(!$post->mixi_diary_id && $isModify) {
return false; //falseを返すように修正
}
}else{
if($_POST[‘publish_mixi’] != 1) {
return false; //falseを返すように修正
}
}
// 1.0.0 RC2: リクエストに利用するクッキーを既存のものからではなく、新しく作成する
$user = wp_get_current_user();
$cookies = USER_COOKIE.’=’.urlencode($user->user_login).’; ‘;
$cookies.= PASS_COOKIE.’=’.md5($user->user_pass);
$relative_path = preg_replace(‘/^’.preg_quote(ABSPATH, ‘/’).’/’, ‘/’, __FILE__);
$ping_url = get_settings(‘siteurl’) . $relative_path;
$parts = parse_url($ping_url);
$argyle = @ fsockopen(
$parts[‘host’],
$_SERVER[‘SERVER_PORT’],
$errno,
$errstr,
0.01);
if ($argyle) {
fputs($argyle, “GET {$parts[‘path’]}?” .
“post_id=” . $postId .
” HTTP/1.0rnHost: {$parts[‘host’]}rnCookie: {$cookies}rnrn”);
}
$this->_publishedId[] = $postId;
return $postId;
}
function saveHandler($postId) {
if ($postId = $this->executePublishToMixi($postId, true)) //$postIDが戻された時だけmixi記事を更新
$this->publishToMixi($postId);
}
function publishHandler($postId) {
if ($postId = $this->executePublishToMixi($postId)) //$postIDが戻された時だけmixiに記事を投稿
$this->publishToMixi($postId);
}[/php]

元々の作者が4月くらいからプラグインの更新もするようなことをブログに書いていて期待しているのだけど、表面上動いている様子は未だなし。個人的には画像へのリンクも含めたaタグの除去をなんとかして欲しいけれど。

WordPress 2.5.1

そうこうしているうちに、2.5.1がリリースされた。

丸ごと上書きでとりあえずバージョンアップ。

そんなこんなで、まだまだのんびり更新継続予定。

のんびりと更新

WordPressが2.5にバージョンアップした模様。本家版に続き日本語版もリリースされたので,早速更新。手順は,プラグイン全OFFして全ファイル上書きUPで完了。

で,それなりに変更箇所があったりして,動かないプラグインもチラホラあるそうで。自分のところでは,アクセス解析に使っていたWp-SlimStat-Ex日本語版がエラーで使用できなかった。Simple Tagsもダメらしいと,どこかで,いろんなところでそんな記事を見たような見なかったような気がするけれど,自分はあまりこのプラグイン駆使してないないので。と,思ったら既にバージョンアップしてる?ファイル名が「simple-tags.1.5.zip」になってるけど…。ダウンロードしてみたもののよく分からないのでインストールは保留中。

管理画面の雰囲気がガラっと変わり,色々と良さ気な機能も追加されてたりするので,他の人の記事を読みつつ,のんびりと更新する予定。プラグインの入れ替えも含め,そろそろテーマも書き換えようかな。いい加減,オレンジ色飽きてきた。目に良い配色じゃないし。

追記

mixiのコミュにもチラッと書いてる人いたけど,Wp-MixiPublisherがどうもダメらしい。mixiに記事が反映されない。

それと,Advanced Tag Entryもタグを追加してくれない。わーどぷれすっ! » WP 2.5 のタグ付け機能のバグでは使えると書いてあったけど,他のところに問題あるのかな?タグ重複のバグ(仕様?)も解決していないようだし。とりあえずタグ無しで投稿して,Inline Tag Thingで後付けしました。Inline Tag Thingは動くようです。

なんか,他にも色々不具合ありそうだけど,まあのんびりと。

さらに追記

自分の環境だけかもしれないけれど,Advanced Tag Entryを使用してると,投稿画面でスクリプトエラーが出る。とりあえず解除したら,投稿画面の表示も色々追加されたよう。ということで,このプラグインを使用停止に。

そもそも,画像追加するボタンが無いなぁとずっと探してたんだよね。コレが原因だったみたい。

タグ関連のプラグイン

あれからあまり弄ってなかったけれど、Simple Tagsってプラグインが便利そうなので導入しました。このプラグインでタグ管理など色々出来るので、Advanced Tag Entry をやめて記事投稿時の挿入に Recommended Tags for WordPress と Click Tags を入れて試したりしています。

ただ、Advanced Tag Entry でスラッグを全て記入したはずなのに気付いたら日本語タグのスラッグがエンコードされた文字に変わってた。気になるのでSimple Tags でこれらのタグのスラッグを再度編集。したはずなのに…。Recommended Tags for WordPress や Click Tags でタグ挿入するとどうも新規のタグを追加しているような感じで、既存のスラッグを設定したタグとエンコードされたタグとでダブってしまう。さらにSimple Tags で一番便利と思った記事タイトル一覧でのタグ編集でも、同じような現象に。

使用上は問題ないのだけど、せっかくスラッグを設定してスッキリしたアドレスにしているのに、エンコードされた長ったらしい訳のわからない文字列になるのはどうも解せない。結局、記事の投稿や編集時のタグ追加はAdvanced Tag Entry、タグの管理には Simple Tags 、記事タイトル一覧でのタグの編集は今のところ使わない、ということに。

Advanced Tag Entry で記事にタグを追加するときは問題なかったはずだけど、プラグイン側の仕様なのか。さっき見たらまた変になっていたのでスラッグを記入し直さなきゃ。

追記

2007年10月7日

なんか気付いたらタグめちゃくちゃだなぁ。明日きれいさっぱり、一からタグ付け直そうか。

2007年10月8日

4.1 日本語タグ名を使えるか?に書いてありました。やはり重複してしまうようです。

Advanced Tag Entry でタグを追加した場合は、スラッグを挿入しているようなので、タグが重複して追加されないのかな?

WordPress2.3

アップグレードしました。タグ機能の追加など、大幅な変更が加わっているらしいのでちょっとビビってましたが、上手くアップグレードできたっぽいです。

タグ機能の追加でカテゴリ関連のテーブルに変更があるので、それに絡んでいるプラグインは問題が出たりなど、新しいバージョンでは使えなくなったプラグインのリストも公開されているようです。自分が使っているプラグインでは UltimateTagWarrior と Extended Live Archives が該当。UTWは新しいバージョンでタグが使えるようになるので不要に。タグのインポーターも付いているので、今までUTWで付けていたタグをそのままWordPressの方へ持っていけます。とりあえず何事もなくインポートできて、ホッ。

Extended Live Archives はアーカイブページで使っていたのだけど、これはページを削除(非公開)にしてブラグインを無効化して対処。他は今のところ問題なさそうな感じだけど、ただ一点、アクセス解析に使っている WP-SlimStat-Ex がときどきデータベースエラーになってる。閲覧するのに支障はなさそうなのでしばらく放置の方向。

新バージョンは、ベータ版の頃から試している人などもちらほら見かけるけれど、正式公開されたばかりなので日本語の情報がまだまだ少ないのが不便です。特にタグは管理画面などが用意されているわけでなく、プラグインによって機能追加しなければならないので、その辺の情報が早くほしい。英語苦手だし読む気もあまりないので、気長に待つか…

タグ周りのプラグイン

今のところタグ付け機能 – ps*wikiが詳しいのかな。

Advanced Tag EntryTag Managing Thingをインストールしてみたけれど、Tag Managing Thing が何故か動かない。Recommended Tags for WordPressもちょっと気になるのでそのうち試して見るつもり。

タグを利用した関連記事の表示にはWP 2.3 Related Posts。日本語タグも問題なさそうな感じ?

あとは、記事一覧で一括編集できるようなプラグインがほしい。適当にタグ付けしてきたので、ここらで整理したいんだよな。

“WordPress2.3” の続きを読む

UltimateTagWarrior

結構多くのブログ等で見かけるようになったタグ付けに挑戦。記事にタグ(キーワード)を付けて、カテゴライズするって感じかな。自分としては標準であるカテゴリーだけで十分なんだけど、各記事の関連記事を表示をしたいがためにインストール。色々調べた感じで、このプラグインでのタグを利用したものが関連記事を表示するプラグインの中でベターなんじゃないかなって。

詳しく解説しているサイトがあるので、それ見て導入。日本語版はバージョンが古いらしいけど英語は嫌だから、試しにlanguageフォルダとヘルプだけ最新版に上書き。一応動いている感じ。ついでに既存記事のタグ付けにとReTag Post-Extension for UTW もインストール。

ちょちょいと設定を済ませて終わりなんだけど、UTWのオプションの設定画面が少し変。設定項目のタイトル部分で背景色と文字色が同じ色で、何書いてあるかわからないし、ReTagの方はPostとTagsの横幅が崩れてるのと、前のページをクリックしてもページが切り替わらない。

オプションの設定の文字が見えないのはたいした問題じゃないのでそのまま放置し、ReTagの方はファイルのCSSを記述している部分を自分好みに書き換えて対処。ただ、ページが切り替わらないのはさすがにお手上げ。

ページ切り替えが出来ず、ReTag Post-Extension for UTW がいまいち使えないので、The inline tag-adderとやらを使ってみることに。これは記事の編集画面に入らずにタグを追加できるもので、ヘルプにあったテーマへの記述例をそのままコピペ。実際にタグを追加してみると、追加されない。悩むこと長時間。

色んな文字を登録して試してたところ、英語はちゃんと登録されるけど日本語はダメっぽい。で、すでに登録済みの日本語タグがエンコードされているので、試しにエンコードされた文字列を追加してみると日本語にデコードされて表示。ここで調べること長時間。

どういういきさつでそうしたか忘れたけれど、ultimate-tag-warrior-ajax-js.phpの

http.open('get', '?action='action+'&tag='+tag+'&post='+post+'&format='+format);

と書かれているような部分にencodeURI()を書き加えてあげたら、出来た。

何がどういう処理をしているのかまったく理解していないけれど、意図した通りに動いているからいいや。