WordPressで任意の文字コードでページを出力する方法

Wordpressの文字コードはUTF-8ですが、とある案件でとある事情により、特定のページだけをShift-JISで出力しなければいけない状況になり、解決方法を見つけたのでメモ。

テンプレートになるphpファイルの頭に、

<?php
header("Content-Type: text/html; charset=Shift_JIS");
ob_start();
?>

phpの最後に、

<?php
$out = ob_get_clean();
$out = mb_convert_kana($out, "rak", "UTF-8");
$out = mb_convert_encoding($out, "SJIS", "UTF-8");
echo $out;
?>

と表記。つまりこれらのphpで変換する部分を囲めばいいわけだ。

元記事では携帯用に出力するためmb_convert_kanaがありますが、僕の場合は今回は不要、あと上記のままだとmeta charsetがUTF-8のまま出力されてしまうので、下記のようなコードに。ちなみに、スラッグがcontactの固定ページにだけ適用したかったので、page-contact.phpというテンプレートを用意し、そこに記述しました。これで他のページには影響をださず出力できます。

header( 'Content-Type: text/html; charset=Shift_JIS' );
ob_start();

// ここにWordpressのループとか

$out = ob_get_clean();
$out = mb_convert_encoding( $out, 'SJIS', 'UTF-8' );
$out = str_replace( 'UTF-8', 'Shift-JIS', $out );
echo $out;

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく