PR

TeraPad with UTF-8N

運用保守

TeraPadを使ってPHPのコードを書く場合(他の言語でもそうですが)、文字コードをUTF-8Nに設定してファイルを保存してください。WordPressダッシュボード内の外観→テーマの編集で子テーマのfunctions.php等を見ようとしても真っ白になって見えない場合は、 まず、UTF-8N以外で保存されている可能性を疑います。

TeraPadは言うまでもなくシンプルで優れたエディターですが、導入初期(デフォルト)の文字コードは、Shift-JISに設定されています。そのため、表示→オプション→文字コードのタブを開き、文字コードの設定の中で、初期文字コードをUTF-8Nにしてください。保存文字コードは自動で結構です。

次に、ファイル→文字/改行コード指定保存を選択し、文字コードをUTF-8Nに変更してください。その他の設定はそのままで結構です。対象のPHPファイルを開いた場合に、TeraPadの最下段の右側に「PHP UTF-8N CRLF 挿入」などと表示されていればOKです。

今やWordPressは子テーマ必須ですが、style.cssは表示されても、その他のPHPファイルはうまく表示されない場合があります。UTF-8N以外の文字コードでは、そのようになる場合があることを覚えておきましょう。また、圧縮されたスタイルシートやPHPファイルの場合も同様の症状が出る場合があります。Windows 10ベースで作業をされている方はご注意ください。

<閑話休題&備忘録>

子テーマのスタイルシート style.css (子テーマフォルダ内)

/*  Example of style.css
    Theme Name:  storefront - child theme
    Template:    storefront
*/

子テーマの独自関数の倉庫 functions.php (子テーマフォルダ内)

<?php
/*  Example of functions.php
/*  親テーマのスタイルを子テーマに引き継ぐ */
function theme_enqueue_styles() {
  wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); 
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

/*  Error fix for Apple Pay */
function my_shipping_address_fields( $fields ) {
  $fields[ 'shipping_phone' ][ 'required' ] = false;
}
add_filter( 'woocommerce_shipping_fields', 'my_shipping_address_fields', 999 );

functions.phpですが、行の最後に ?> を付けないようにしてください。PHPプログラミングではお決まりのターミネータを付けてしまうと、WordPressは正常に動作しなくなります。(皆の知っていることだとは思いますが念のため)

以前は @importを用いていましたが、現在は、上記の上段の例のように記述します。下段の例は、お馴染みのWooCommerceとStripeを国内で使う場合、スマホ等でApple Payの支払い画面でのエラーを回避する場合に用いる定番の修正です。呪文みたいですが、WordPressは本当に便利だなと感心させられます。

上段の記述はアクションフック、下段の記述はフィルターフックと言います。使えるようになるとWordPressカスタマイズの幅が大きく広がります。明鏡塾の技術講座の主要部のひとつです。