webコンテンツを徹底強化!WordPressサイト制作とプラグイン&テーマ情報・メンテ/エラー対応から、PHP/CSS/javascript、動画・音・イラスト等制作まで扱うコラム
マルチメディアコンテンツ制作読んどけ☆コラム

【PHP etc.プログラム学習サイトコードコピペ】全角引用符・バッククオートが入ってて動かない件に注意

      2021/02/23

【PHP etc.プログラム学習サイトコードコピペ】全角引用符・バッククオートが入ってて動かない件に注意

今回は、管理人が学習サイトなどでコードを調べていて、4回くらい遭遇したトラブルをご紹介します。 ポイントは『全角引用符』。これに気づかないで単純にコピペしていると、えらいことになります。さっそく状況を見ていきましょう。

コードに全角引用符が入るとどうなるか?→この通り、プログラムとして認識されず動きません

コードをネットで調べていて、某プログラム学習サイトで『このコードを使ってみよう』となった管理人。自前のWordPressに実装しようとします。コードの内容は『プラグインを使わず、カスタム投稿タイプを登録する』でした。 しかし、単純にコピペしてしまうと、動かない&プログラムとして認識されないというケースもあります(場合によってはシンタックスエラーなども発生するので注意してください)。

動くコード(PHP・配列の要素もきちんと半角引用符で)

こちらが、管理人が打った『動くコード(PHP)』です。フックかけるファンクション名・配列中身・文字列などは半角引用符で打ちます。最近のWordPressエディタって、こんな感じで赤くハイライトしてくれるからわかりやすいです(試しに全角を混入させてみると、色が黒くかわるなど、すぐわかる)。

動かないコード(全角引用符&バッククオートが混在)

こちらが問題の、単純にコピペしたところ、プログラムとして認識されず、カスタム投稿タイプ追加機能が使えていません(WPエディタの機能で色が変わっていない)。

動かない原因その1の、『全角引用符』。これだけなら変換してやればokです。

動かない原因その2の『バッククオート』。PCのキーボードでいうと『shiftキーと@キーを一緒に押すとでてくるやつ』です。こういうのがいろいろ入ってくると、自分で打ち直したほうが早い気がします(笑)

最近は慣れてきて、コードは合っていそうにみえるのに動かない時は『引用符じゃね?』と予測ができるようになりました。しかし、WP始めたばかりの時は、この手のケースで原因がわからず苦労しました(初期バージョンのWPは、エラーを教えてくれず、そのまま画面が真っ白になるのがデフォだった。)。

WPなどで、本文中の半角引用符が、全角に変換されてしまうことはある

今回のケースでは厄介な全角引用符でしたが、世の中には『システム上入ってしまう』というケースもあります。例えばWordPressで『pre・code・kbd・styleなどのタグで囲まない場合、引用符が全角になる』『wptexturize関数』というのがあります。検索すると、『勝手に変換されてる』って、困っている人もいるようです。

codexで調べたところ『wp-includes/formatting.php』で定義されているファンクションで、『run_wptexturize フィルターフックをかけて無効化することができる』とのことです。このサイトのコードも、github gistで載せるほか、ちょっとしたものは『run_wptexturizeフィルタかけたうえで載せている(2020現在)』ので大丈夫かと思います。 (昔使っていたテーマでは、このフックを使っていないので、2年前くらいにコード使ったら動かなかった方はお知らせください。)

あとがき・まとめ

  • プログラム学習サイトからのコードコピペは、全角引用符・バッククオートが混在することがあったので気をつける
  • WordPressなどのシステム上、全角変換などが行われることがあり、都合が悪い場合はフックをかけて無効化できる

まとめるとこんなところでしょうか。単純コピペでエラーが出ると凹みますが、引用符などの勉強になったと思えば安いかもしれません。もちろん、事前に知識としていれておけば、十分対処可能です。


【カテゴリ】 - PHP・データベースetc
【タグ】 - ,

  関連記事

【WordPressで覚えよう】PHP「->」(オブジェクト演算子/アロー演算子)・「=>」(ダブルアロー演算子)の違い

今回は、管理人もPHP学習し始めのときは混同していた、PHPの演 ...

【超危険】WordPressデータベースリビジョンお掃除

今回は、WordPressのリビジョンが、データベースに大量にた ...

【PHP】カウントダウン機能に使える?array_reverseで配列要素を逆に,パラメーター挙動&array_flipとの違い

今回は、管理人がYouTubeData APIの、order=d ...

YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)

今回は、youtubeとwebサイト連携で、YouTube Da ...

テスト環境(ローカル含む)でPHPサイト開発に使えるツール&xamppでやってみた例(設定や表示ファイルetc)

今回は、管理人がサイトに、ちょっとした機能を実装しようとしていた ...

WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで

今回は、WordPressの公式フォーラムを見ていたら、『一覧か ...

WordPress・REST APIのjsonファイルにカスタムフィールドを入れ、タイトル・アイキャッチと共に外部サイトで取得・表示

今回は、管理人がWPで作ったサイトのコンテンツを、別の自社運営サ ...