気がついたこと

実家に帰るとやることがない。みんな仕事って何じゃそら。
いろいろやりたいけど、ハードディスク置いてきたんで、何かするにはうちからダウンロードしないといけないわけで。
回線遅いわけで。
PC遅いわけで。

とりあえず、WordPressで遊ぶかな。
ログが大量に残るけど。

■ 画像
画像をアップロードするとき、タイトルは勝手にファイル名が入る。(消しても必須属性だから勝手にランダム値が入る)
でも、代替テキストは空。
そのままアップロードするとalt属性が空になってしまう。

代替テキストが空だったらタイトルから引っ張ってきてほしいんだけどなぁ…
代替テキストにファイル名ってのはどうかと思うけどさ……

■ 続きを読む
トップに表示される部分とされない部分の境目に線を引いてるけどdiv使って引いてたんで
「<div>と</div>の間が空です。」
ですってwwwwwwwwww

修正するか…

あれ。どこ変えれば良いんだっけ?

■ <a>のアンカーXXXXはXXX行目で異なるリンク先を刺しています。
デフォルトウィジェットだと編集しても、WordPressバージョンアップで元に戻るわー
うぜー

_wp_unfiltered_html_commentみたいに置換ってのは難しいしなぁ…
かといって、自分で作るのはメンドイし…どうしたものか……

とりあえず、手で修正入れておくか。日付と時間をtitleにしておけば大丈夫だろ。
前やったときは投稿者にしてたからな。投稿者はまずいだろ。

default-widgets.php 645行目
get_comment_date(‘Y.m.j’)とget_comment_time(‘H:i:s’)追加

		< ?php echo $before_widget; ?>
			< ?php if ( $title ) echo $before_title . $title . $after_title; ?>
			<ul id="recentcomments">< ?php
			if ( $comments ) : foreach ( (array) $comments as $comment) :
			echo  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '" title="'.get_comment_date('Y.m.j').' '.get_comment_time('H:i:s').'">' . get_the_title($comment->comment_post_ID) . '</a>') . '';
			endforeach; endif;?></ul>
		< ?php echo $after_widget; ?>

どっちが面倒なのか

wordpressにログインしてる状態で、個別ページを開くと文法エラーになる。
コメント送信部分のid属性値に”_”で始まってる “_wp_unfiltered_html_comment” があるのが原因で、頭のアンダーバーを取ればエラーは出なくなる。

ただ、バージョンアップする度に3つのファイルを開いて “_wp_unfiltered_html_comment” を置換するのが面倒だった。

なので。

phpでwordpressディレクトリ以下をgrepかけて置換するのを作った。

しかし、だ。
しかしなんだ。
いちいち、sshとかでサーバーにログインしてphp実行させるのめんどくさい。

じゃあ、プラグインにするか。
と、なり。

作ってみた。初めてのwordpressプラグイン!
しょぼい……

_wp_unfiltered_html_comment replacer

管理画面を開くたびにチェックして勝手に置換したほうが楽だろうけど…
毎回、ファイルチェックするのはちょっと…

余談:
バージョンアップしないっていう選択肢はない。
ScanNetSecurity – WordPressのfile.php脆弱性に関する検証レポートを発表(NTTデータ・セキュリティ)

<textarea> には初期値となるテキストを指定しておきましょう。

Another HTML-lint gatewayでチェックすると個別ページで

「<textarea> には初期値となるテキストを指定しておきましょう。」

っていわれる。
入力用フォームなら初期値とか要らない気がするんだが、何かしら文字を出しておくのも悪くないかなと思って初期値を入れてみることにした。

    <p>
        <textarea name="comment" id="comment" cols="45" rows="10" tabindex="4">コメントして下さい。</textarea>
    </p>

テーマのcomments.phpに上記のように初期値を追加。
これで、100点だ。

しかし、このままだとボタンを押されると「コメントして下さい。」の文字が送信されてしまう。
そこの制御はJavascriptさんに任せることにします。

上の検索フォームで使ってるソースを流用。01

$(document).ready(function(){
  var defmsg = 'コメントして下さい。';
  $('#comment').blur(function(){
      var $$=$(this);
      if($$.val()=='' || defmsg==$$.attr('value')){
        $$.css('color', '#7F7F7F').val(defmsg);
      }
    })
    .focus(function(){
      var $$=$(this);
      if(defmsg==$$.attr('value')){
        $(this).css('color', '#000000').val('');
      }
    })
    .parents('form:first').submit(function(){
      var $$=$('#comment');
      if(defmsg==$$.attr('value')){
        $$.triggerHandler('focus');
      }
    }).end()
    .blur();
});

これで、フォームがアクティブになると「コメントして下さい。」の文字が消え。
かつ、初期値のままでは投稿できないようになりましたとさ。

  1. jQueryを使用 [戻る]

_wp_unfiltered_html_comment

WordPressにログインした状態のコメントフォーム内のid属性値に”_wp_unfiltered_html_comment”ってのがある。

id値はアンダーバーから始まっちゃダメだろ…

まぁ、別に何か問題があるというわけではないんだが、FirefoxにHtml Validatorをインストールしてると警告マークが付いて気になってしょうがない。

というわけで、最初のアンダーバーを取って”wp_unfiltered_html_comment”にする。

dw2009071802

プラグインが使ってるかもしれないから、一応Grepした方がいいよ。

Another HTML-lintで100点を目指せ

現状

dw2009071701

すでに、「よくできました。」である。
もうゴールしても良さそうな点数だけど、気になるので修正。

プラグインと動作チェック

HTTPのエラーログに大量のエラーが…

[Mon Jul 13 20:19:42 2009] [error] [client 203.135.231.85] next, referer: http://www.dazzlingworld2.com/

<!–nextpage–>を使ったページを表示するだけで出るようで、何でこんなのが出るのか半日ほど調べたけど分からず。
おかげで仕事も手に付かず。
でも、仕事中にもしかしてと思い当たる。

もしかして、PHPにエラーログ吐かせる命令があるのではないか。と。

で、実際にあってビンゴです。
error_log();
ってのらしい。

サーバー内を”error_log(‘next’)”でgrepしてみると一件出てきた。
Table of Contents Generatorっていう見出しから目次を作るプラグインの中にありました。

Table of Contents Generator的にはnextpageは使って欲しくないのだろうか?
確かに、目次のリンクが切れそうではあるが…

error_log(‘next’);をコメントにすれば良いんだろうけど、プラグイン自体使わなさそうだから停止しとくかな。

wp-cumulusの日本語化

wp-cumulusを日本語化したのは探すと結構出てくるけど、Flashにフォントを埋め込むため、やっぱりファイルサイズが大きい。
日本語すべてとなると1.8MBを越える。

いくらブロードバンド時代だと言っても限度があるわけで、どのページ開いても1.8MB以上も読み込むのはサーバー的にも良くないと思ったので、埋め込む文字を第一水準までにしてみた。
変な漢字使わなければ第一水準で十分と思う。

以下、今回埋め込んだ文字。
・大文字
・小文字
・数字
・句読点記号
・基本ラテン
・日本語(かな)
・日本語 漢字 – JIS 第一水準
・ラテン I

1MB近くも削れて830KBにまで減った。

使ったフォントはライセンス的にも大丈夫そうな、VLゴシックフォントを使用。
出来れば太字にしたかったんだけど太字がなかった…
太字じゃなくても、これはこれで良いかなと。

tagcloud.zip

コンフリクト!

昨日辺りから、フィードが500エラーを返してて何でだろうと色々調べてみると、昨日入れたExec-PHPが問題だったらしい。

Exec-PHP単体で動かしてる分には良かったんだけど、”Syntax Highlighter for WordPress”と同時に使用すると、フィードでPHPを実行しようとしてるみたいで。01
さらに、フィードではSyntax Highlighterも動かないから[php]も置換されずにそのまま出てるわけで…
“eval()’d code on line 20″とか’['が多いとかいうエラーが出てました。

フィードでPHPを動かす必要性はあまりない。
てことでExec-PHPで実行される前に[php] ~[/php]をオミットすることにする。

exec-php/includes/runtime.php

	function eval_php($content)
	{
		// to be compatible with older PHP4 installations
		// don't use fancy ob_XXX shortcut functions
		$content = preg_replace('/\[php[^<>]*\](.*\r\n)+\[\/php\]/i', "", $content);
		ob_start();
		eval("?>$content<?php ");
		$output = ob_get_contents();
		ob_end_clean();
		return $output;
	}

'['と']'は半角に変換してくださいね。

空白に置換するんじゃなくて、何かしらの文字列にした方がいいかもねぇ。
「PHPソース省略」とか。
あと、PHPだけじゃなくてHTMLソースも消した方がよさそう。02

  1. 記事は’<’が文字実体参照に置換されるから問題ない [戻る]
  2. 今回対応したのが、後で問題になりそうな気がするなぁ… [戻る]

色々テスト

目的

プラグインテスト

その1

文章に注釈を付けます。01
括弧の前に半角スペースがいるのか…

その2

見出しを拾って目次を作る02
たぶん使わない。
スタイルはセルフサービスかよ。

その3

amazonテスト。
画像サイズ大は無理があるな…

結論

なんにせよ。CSS書かないといけない。03

  1. WP-Footnotes [戻る]
  2. Table of Contents Generator [戻る]
  3. めんどくせ [戻る]

ヤドカリのあれ

ブログの動作がちょっとアレで、アップグレードに失敗したかな?と思ったので新しく落として来て鞍替え。
新しく落として来たものにwp-config.phpをプラグイン、テーマディレクトリをコピーするだけなんだけど、FTPだとやる気がなくなるくらい遅いのでSSHでサクッと。

やったところで何も変わらなかったけどな。

それでも、使ってないorたまにしか使わないプラグインを停止したりして、ちょっとは軽くなれと試行錯誤してた朝5時。
早起きは36文キックですよ。
おかげで0.1秒ほど速くなった。

誤差って言うな!
よし、これを言っておけば大丈夫だな。

※ページの表示速度はパソコンの性能で変わります。

圧縮して転送してるからあながち嘘じゃない。
dw2009070401
Analysis Tools for Your Site

圧縮されすぎのような気がしなくもない…