現在のページの位置:ホーム » ホーム > WordPress

くろねこスクエア Labs


« »

賢すぎるKSES

マルチサイト運用のWordPressではKSESによって許可されていないHTMLタグが削除されてしまう(ex.imgタグのtitle属性等)のですが、少し不便な場面がありまして、How to Remove Crazy WordPress MU HTML Filterのコードを使ってみます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function less_filters(){
    // disable texturize
    remove_filter('comment_text', 'wptexturize');
    remove_filter('the_excerpt', 'wptexturize');
    remove_filter('the_content', 'wptexturize');
    #remove_filter('the_title', 'wptexturize');

    disable_kses_content();
}
// disable KSES for content, Working now
function disable_kses_content() {
    remove_filter('content_save_pre', 'wp_filter_post_kses');
    remove_filter('excerpt_save_pre', 'wp_filter_post_kses');
    remove_filter('content_filtered_save_pre', 'wp_filter_post_kses');
}
add_action('init','less_filters',20);

「東京電力の電力使用状況」をWordPressプラグインにしてみた

今なお苦しみが続く、東日本大震災で被災された方々に心よりお見舞申し上げます。今回の一連のことについて思うことは尽きませんが、改めて思い返せば、あまりの惨事に「言葉を失う」ような状態でありました。震災後1ヶ月以上が経過して少しずつ落ち着きを取り戻しつつあるのかもしれませんが、とにかく一日も早い復興と発展を願っております。

ところで、先日東京電力電力供給状況APIを使ってみましたというのを見て、そのまま能もなくWordPressプラグインにしてみました。元データには東京電力電力供給状況APIを使わせていただきます。非常にゴリゴリで役に立つモノでもないのですが、最近は記事の投稿も少ないので置いておきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
/*
Plugin Name: Tokyo Electric Power Supply Meter
Plugin URI:
Description:
Author:
Version: 0.0.1
Author URI:
*/

add_action( 'wp_head', 'electricity_header_content');
add_shortcode('elec_meter', 'elec_meter_func');

function electricity_header_content(){
?>
<style type="text/css">
.off {display:none}
.electricity,.tepco,.kilowatt2,.kilowatt1{font-size:10px}
.percent {margin:0}
.electricity,.tepco {padding:0}
.electricity{
margin:6px 0;
width:236px;
height:100px;
display:inline-block;
border:solid
}
.electricity,.text{
border-style:solid;
border-color:silver
}
.electricity,.text,.kilowatt1{border-width:1px}
.tepco,.percent{font-weight:bold}
.tepco,.meter{margin:0 6px}
.text{
background:#c2ed9a;
top:-25px;
right:0;
margin:0 0 0 160px;
padding:0 6px;
width:55px;
height:55px
}
.text,.savings {position:relative}
.kilowatt2,.kilowatt1 {
margin:-2px 0 1px 0;
line-height:1.5
}
.kilowatt1{
border-bottom:solid;
border-width:1px;
}
.percent {
font-size:14px;
text-align:center;
line-height:20px
}
.savings {
top:-60px;
left:6px;
font-size:12px
}
</style>
<?php
}
//------------
function h($s) {
    return esc_html($s);
}
//------------
function elec_meter_func(){

        $cache_file =  ABSPATH.'wp-content/uploads/tokyopower.html';
       
        if(file_exists($cache_file)){
            $time_newest = @filemtime($cache_file);
        }
       
        $timedif = @(time() - $time_newest);
        if ($timedif < 1800) {
            /*
            // If-Modified-Since
            $request_headers = apache_request_headers();
            $etag = md5( $_SERVER["REQUEST_URI"] . $time_newest );
           
            if( $request_headers["If-Modified-Since"] ) {
                $since = parse_http_date( $request_headers["If-Modified-Since"] );
                if( $since["timestamp"] >= $time_newest ) {
                    header( "HTTP/1.1 304 Not Modified" );
                    header( "Etag: \"$etag\"" );
                    exit();
                }
            }*/

            // Return cache
            $data = file_get_contents($cache_file);
        } else {
            // Create new data
            $data = createOutputData();
            // save data as cache file
            if ($f = @fopen($cache_file, 'w')) {
                fwrite ($f, $data, strlen($data));
                fclose($f);
            }
        }
    return $data;
}
//------------
function createOutputData(){
    $data = json_decode(file_get_contents("http://tepco-usage-api.appspot.com/latest.json"));
    $percentage = $data->usage / $data->capacity * 100;
    $usagecolor = sprintf("%d", pow(2, (9 * $percentage / 100)) - 1 );
    $usagecolor = ($usagecolor > 255) ? 255 : $usagecolor;
    $s = '';
    $s .= '<div class="electricity">' . "\n";
    $s .= sprintf('<p><span class="tepco">東京電力の電力使用状況</span> (%s/%s/%s %s時台)</p>', h($data->year), h($data->month), h($data->day), h($data->hour));
    $s .= '<div class="meter" style="position: relative; width: 150px; padding: 0; background: none repeat scroll 0% 0% rgb(217, 217, 217);">
<span style="width:'
. sprintf("%.1f%%", $percentage). '; display: block; position: relative; background: none repeat scroll 0% 0% rgb('.h($usagecolor).', 200, 0); text-align: center; color: rgb(51, 51, 51); height: 15px; line-height: 15px;">';
    $s .= '</span></div>';
    $s .= '<dl class="text" style="background-color:rgb('.h($usagecolor).', 200, 0);">'."\n";
    $s .= '<dt class="off">使用率</dt><dd class="percent">' . sprintf("%.1f%%", $percentage) . "</dd>\n";
    $s .= '<dt class="off">使用量</dt><dd class="kilowatt1">' . h($data->usage) . "万kW</dd>\n";
    $s .= '<dt class="off">供給可能</dt><dd class="kilowatt2">' . h($data->capacity) . "万kW</dd>\n";
    $s .= "</dl>\n";
    $s .= '<p class="savings">計画停電 ';
    $s .= ($data->savings ? '実施中' : '実施せず');
    $s .= '</p>' ."\n";
    $s .= "</div>\n";
    return $s;
}
//------------

WordCamp山盛り。おなかいっぱい

WordCampケーキ
WordCampフィナーレ♪

くろねこスクエアの半分はMODxでできているわけですが、何よりこのブログはWordPressですし、WP日本語フォーラムにも(新参者だけど)時々顔出しているし、参加してもいいよね!ってことでWordCamp YOKOHAMA 2010へ行ってきました。内容は色々な方が言及しているので「楽しかったよ」の一言で割愛。

AED搭載自動販売機
会場にはAEDも完備

閉幕後、とある場所でtunakkoさん、xenoさんたちが「スマートフォンを重ねてみた」をやっていたのです。そこへカイさん、takamorryさん、IKUKOさん他…が1台ずつ献上したと思ったら、Yurikoさんが加わって。

情報端末
手前に積んであるのは全部Yurikoさんの所有・・・

こんなに賑やかになりました。

でもこれってありがちだよね…

というわけで、全部積んでみた。

情報端末山盛り
「見事なオブジェ feat. Yuriko」 あ、あぶないっ!

iPadもあったけど、さすがにこの上には乗りませんでした。

おまけ

ところで、WordCampで配られた名札のアイコン画像が、なぜか見にくくなってしまっていて、いわゆる闇のカラス状態。

名札 kurosquare
名札の紙は白いのに、アバターの部分だけ背景が黒なのはなぜ??

どうして??と考えてみたけど、

  1. アルファチャンネルに対応していない
  2. アイコン画像部分が黒で塗りつぶされている

のどちらかでしょう。でも2010年にもなって、ましてやWordCampともあろうものが「PNGのアルファチャンネルに対応していない」なんてことは「ありえない」はずなので、たぶん「アイコン画像部分が黒で塗りつぶされている」んでしょう(どこぞの古いブラウザじゃないんだから)。名札の地色が黒だったら仕方ないんですが、白なのになぜ!!

少し残念だったので、ちゃんとしたアバターを載せておきます。

kurosquare
中の人はこんな感じです

CodeColorer – WordPressプラグイン

とっつきにくいソースコードなどを色分け表示したい時はありませんか?Syntax Highlighterにはいろいろ種類がありますが、先日、WordPressプラグイン CodeColorerに拙作の日本語リソースを同梱していただきました。

CodeColorerの特徴は…

  • プラグインを無効にしても問題なく表示される
  • サーバサイド処理
  • CSSで色を指定可能

CodeColorerのコアライブラリはGeSHiなので、対応言語の多さには定評があります。例えばgnuplotとかDOT languageにも対応しているんですよ。

コード表示には、この手のツールが、お便利です。

WordPress 2.8へアップデート

WordPress 2.8へアップデートしました。今回の改善ポイントは管理画面の高速化だそうですが、以前からそれほど気にしていないので言われてみればといったところでしょうか。ウィジェット APIが刷新されたようですが、今のところ利用方法には影響していません。

携帯用テーマ1.1へアップデート

WordPressの携帯対応プラグインKtai Styleをアップデートする際、同時に携帯用テーマも更新しました。従来はアップデートの都合から付属テーマをほぼそのまま使用していましたが、今回はPCサイトに近いデザインに変更しました。これはKtai Style 1.70になり、テーマの修正が容易になったためです。たとえば3G機種(ドコモFOMAなど)ではFaviconに近いアイコンを表示するようにしました。携帯で閲覧する機会はあまり無いのですが、せめて「見やすい」状態にはしておきたいものです。

WordPress 2.7へアップデート

WordPress 2.7へアップデートしました。今回も管理画面が大幅に改良されましたが、すぐに慣れるでしょう。一部に不具合が残っている気もしますが、セキュリティ修正もあるので早めのアップデートです。そして最大のメリットはWordPress本体の自動アップグレード機能かもしれませんね。これからはクリック一つでアップデート、ですよ!(もちろん、データベースなどのバックアップをとっていることが前提です。)

Akismetを導入

コメントスパムが増えてきましたので、WordPressに同梱されているコメントスパム対策プラグインAkismetをONにしました。以後はAkismetが自動的にコメントスパムを捕まえてくれます。

WordPress 2.5へアップデート

WordPress 2.5へアップデートしました。管理画面が大幅に改良されましたので、慣れるまで少し時間がかかるかもしれません。投稿に影響はないと思いますが、一部に不具合が残っているかもしれませんし、しばらく様子見ですね。

ブログをWordPressへ

このサイトで使うメインのウェブログ用ソフトをWordPressに決めました。サイトの開設以来、MovableTypeやWordPressなどいくつかのソフトを併用していましたが、総合的にWordPressにメリットがあると判断しました。ここ数年、世界的にもWordPressの利用が増えているようで、今後の発展に注目したいですね。


カテゴリー

タグ

アーカイブ

Feed

メタ情報