WordPressプラグイン「Add Meta Tags」の文字化けを修正する。

2012年05月09日 18:01 正午の月齢:18.2  月名:寝待月  潮汐:中潮 月齢:18.2[寝待月] 潮汐:中潮 | In WordPress | No Comments(旧暦2012年閏03月19日・ 先負)

この記事を読むのに必要な時間の目安: 3分ぐらい

Add Meta Tagsについて語る前に。

プラグインSociableとWP-OGPを停止しました。Sociableは吐くコードが汚らしい(設定ミスや理解不足だったらごめんなさい)と言う理由で、WP-OGPは「いいね」ボタンがいらないんだったらコレもたぶんいらないよね、という理由です。プラグイン作るんだったらvalidなソースを書いてほしいというのは欲張りなんでしょうか…。(同様の理由でWP-PageNaviも停止しています。)

さて、Add Meta Tags。久々にW3C Markup Validation Serviceでチェックしてみると、サイトを読み込めないエラーが発生しました。どうも変な文字コードが入っているらしい。さっそく原因を突き止めると、【WordPress】「Add-Meta-Tags」と「WP-OGP」で文字化けが起こる不具合に行き着きました。

meta[description]は文字数をN文字で丸めているみたいだけど、文字丸めの関数がマルチバイトに対応してなくて、N文字目が日本語の記事はUTF-8 invalidな文字に変換されるけど、N文字目がシングルバイトの文字はUTF-8 validになるから、記事ごとに文字化けしたりしなかったりというメカニズムじゃないかと推測。

ということで参考どおりにプラグインを数ヵ所編集したら、どうやら上手く動いてくれたようです。

strip_tags(substr($posts[0]->post_content, 0, $excerpt_max_len));

strip_tags(mb_substr($posts[0]->post_content, 0, $excerpt_max_len, 'UTF-8'));

unicodeは、いい意味での多くの可能性を持っている代わりに、サロゲートペアなどトラブルの可能性もたくさん秘めている恐るべき文字コードだなぁと再認識。WordPressとプラグインに何もかもお任せ状態のウェブサイト構築ばかりしていますが、今回のようなことがあるとたまにはチェックも必要だなと痛感するのでした。

関係あるかも知れない記事

WordPressプラグイン「qTranslate」で多言語化してみた。

2012年05月08日 18:00 正午の月齢:17.2  月名:居待月  潮汐:中潮 月齢:17.2[居待月] 潮汐:中潮 | In WordPress | No Comments(旧暦2012年閏03月18日・ 友引)

この記事を読むのに必要な時間の目安: 4分ぐらい

前回の記事において紹介した京津文化フォーラム82のサイトは当初から多言語化を企てていたのですが、いくつか多言語化のプラグインはあるものの、使いやすそうだなと思ったのが「qTranslate」です。

一般的な投稿・固定ページ画面はこのような感じ。

normaltemplate

プラグインを有効化すると、このようにタイトルと入力タブが多言語化。

qttemplate

これで、入力していきます。

言語の切り替えはウィジェットに配置するか、テーマファイルの任意の場所に、<?php echo qtrans_generateLanguageSelectCode('●●●●'); ?>を書きます。●●●●のところは「text」「image」「both」「dropdown」と選択できますが、bothにしてみました。(ウィジェットの場合は「Text only」「Image only」「Text and Image」「Dropdown Box」のうちのText and Imageです。最初は直接記述していましたが、その後ウィジェットに改めました。)

また、設定画面の中のAdvanced Settingsの項目にURL Modification Modeという項目があり、

  • Use Query Mode (?lang=en)
  • Use Pre-Path Mode (Default, puts /en/ in front of URL)
  • Use Pre-Domain Mode (uses http://en.yoursite.com)

という感じで3タイプのURLの書き方を選ぶことができます。今回はいちばん使いやすい(だろうと思う)Query Modeにしてみました。

あと、ブログのタイトルやリンクなど、多言語化されていない入力欄については、[:ja]ブログタイトル[:en]weblog titleのように書くことでちゃんと処理してくれます。テーマファイルに直書きで言語選択させたい場合は<?php _e("<!–:ja–>フィード<!–:–><!–:en–>feed<!–:–>"); ?>のように埋め込むことで実現できます。

それからAnother HTML-lint gatewayでチェックしてみると、言語切り替えスイッチの中に空のdiv要素が生成されていて減点されるので、直接プラグインのファイルを編集してこのdiv要素を出力する箇所(2ヵ所)を削りました。それがどのような影響を及ぼすのかよくわかりませんが、少なくとも言語切り替えにbothを選択している限りでは大丈夫なような気がします。(dropdownはもしかしたら影響あるかも…)

参考にしたサイトはここらへん。

こんな感じで、初の多言語対応は無事に終わりましたー。

関係あるかも知れない記事

WordPress ログイン画面(wp-login.php)への不正アクセス対策。

2012年02月21日 2:13 正午の月齢:29.2  月名:月隠  潮汐:大潮 月齢:29.2[月隠] 潮汐:大潮 | In WordPress | No Comments(旧暦2012年01月30日・ 赤口)

この記事を読むのに必要な時間の目安: 1分ぐらい

AWStatsを眺めていると、ここ最近wp-login.phpへのアクセスがやたらと多いのです。多いっていうか、多すぎ。

どうせあちこちから攻撃されているんだろうけど、突破されたらイヤだなぁ…というわけで対策しておきます。以前からadminユーザーは消しているので、今回はそれ以外の対策をしましょう。

まずはパスワード。今までより4文字増やしておきました。

それからWordPress自体の対策。.htaccessによるファイルへのアクセス制限も考えたのですが、なんか使えそうなプラグイン「Limit Login Attempts」があったので使ってみました。使い方は「wordpressのログイン画面への総当り攻撃などを検出する」を参考に。

これで多い日も安心。夜もぐっすり眠れます。

関係あるかも知れない記事

WordPressに「この記事を読むのに必要な時間の目安」を表示してみた。

2011年12月15日 18:00 正午の月齢:20.3  月名:二十日余の月  潮汐:中潮 月齢:20.3[二十日余の月] 潮汐:中潮 | In WordPress | No Comments(旧暦2011年11月21日・ 先勝)

この記事を読むのに必要な時間の目安: 3分ぐらい

当サイトもすっかり成熟して機能・デザイン面でいじりたいところがほとんどなかったのですが、たまたま見かけたサイトに「この記事を読むのに必要な時間の目安: 3分ぐらい」と書かれていて、思わずこの機能がほしくなってしまいました。なんていうか、顧客満足度の向上につながりそう。「10分時間があるから、この記事ともうひとつくらい読めるな。」なんてね。

さて、phpコードについては、他のサイトから拝借したものを自分なりに加工して用います。今回参考にしたのは、

これらを元に、p要素ではなくh3要素にしてindex.phpに埋め込んでみました。1分あたりの字数は400字に設定。やったー動いたー。

左寄せでは目立たないので、右寄せにしてみました。少しは存在感が出たカナ。

実際のところ、こんなことで訪問者が増えるとか、滞在時間が延びるとかは全く期待していません。だって記事の文字数が全体的に少なすぎる!! ほとんどの記事に「この記事を読むのに必要な時間の目安: 1分ぐらい」と表示されています。3分以上の記事少なっ。いかに文章を書く能力が低いか露呈していますね。ほとんどの内容が「読む」というよりも「見る」というレベルのものばかり。

いや、そんなはずはない。きっと長文も書けるはず。ネタさえあれば…。いや、でもどんなにすばらしい内容でも訪問してもらえなければ意味がないし、あーもーどうしましょ。

その後さらに探してみると、プラグイン化されていました。やっぱり作ってくれる人はいるんだねぇ。

もしテーマをいじりたくない場合や、「PHP? ハァ?」な場合にはプラグイン導入もいい選択だと思います。って言っても、デザインを変えるにはCSSの知識は必要なんですけどね。

関係あるかも知れない記事

WordPress 3.3にしてみました。

| In WordPress | No Comments(旧暦2011年11月21日・ 先勝)

この記事を読むのに必要な時間の目安: 1分ぐらい

知らないうちに、3.3日本語版が公開されていたので、自動アップグレードしてみました。

いつもどおり、formatting.phpをカスタマイズして、勝手な文字の置換をコントロールし、mb_convert_kanaで全角英数字と半角カナを殺します。

メディアアップローダーと管理画面サイドメニューが特に大きな変更点だと思うのですが、でも今までもファイルによってアップローダーを使い分けたことなんてないので、あまり違いがよくわからないなぁ。画面が変わったり、ドラッグアンドドロップができたり、確かに進化している手応えはあります。

もう少し触ってみて、慣れることにしましょ。

関係あるかも知れない記事

powered by WordPress. designed by susu. Entries and comments feeds.