WordPress「 & 」のコードが意図していない箇所に表示される場合の対応

WordPress 6.5.2
広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

URL の「&」が「&」になって、& のあとのパラメーターが効かなくなるときの対応。この形は & を HTML の書き方に変えたもので、WordPress の esc_url() や、本文の記号を整える wptexturize() が変えています。

WordPress「 & 」のコードが意図していない箇所に表示される場合の対応

& は WordPress が & を変えた形

& は文字コードが UTF-8 でも Shift_JIS でも同じ 1 バイトの文字なので、文字コードで & に変わることはありません。HTML の中(a タグの href など)に出すときは & のままでよく、ブラウザが & に戻します。困るのは、HTML ではないところ(JavaScript の中・リダイレクト・API に送る URL など)に esc_url() の結果を使ったときです。その場合は esc_url_raw() を使います。

functions.php
// HTML の属性に出すとき(& は & になるが、ブラウザが & に戻す)
echo '<a href="' . esc_url( $url ) . '">リンク</a>';

// リダイレクト・JavaScript・API など、HTML ではないところで使うとき(& のまま)
wp_redirect( esc_url_raw( $url ) );
exit;

& のあとのパラメーターが「&#038;」に変わって、正しく動かなかったときに対応した記録です。ファイルの文字コードを UTF-8 にそろえておくこと自体はよいことですが、&#038; になる原因は別のところ(どの関数で URL を出しているか)にあります。

SiteBeacon(サイトビーコン)

サイトが止まったら、すぐに気づける。

ホームページを 5 分ごとにチェックして、止まったとき・エラーが出たとき・SSL やドメインの期限が近いときに、メールでお知らせします。2 サイトまでは、ずっと無料で使えます。

SiteBeacon を見る サイトを直す相談をする

監視で気づいたあとの直す作業も、同じ担当がお受けします。