LoginSignup
21
19

More than 1 year has passed since last update.

WordPress バッドノウハウ 〜ダメパターン開発編

Last updated at Posted at 2017-12-24
1 / 12
  • WordPressを利用したサイト開発者初心者向けの内容です。
  • サイト運営者向けは過去にスライド作ってるので参照にどうぞ(一部重複します)
  • なんだかんだでダメパターンがなくならない現状なのでマサカリ覚悟の投稿
  • スライドがめんどくさいのでQiitaのスライドモードにして思い出したら更新しようという腹づもり
  • スライド見づらかったらごめんね!全画面モードだといい感じだよ!
  • @jim0912, @takayukister からネタ提供いただきました。thx!

ダメその1 コアファイルの改変

  • 動作結果を変えたいならフィルターフックやアクションフックを活用すべき
  • 当然アップデートで上書きされる(アップデートしないのは論外)
  • 第三者でも再現できるバグであれば、報告した方がみんなが幸せになる

ダメその2 公式プラグインの改変

  • 動作結果を変えたいならフィルターフックやアクションフックを活用すべき
  • 当然アップデートで上書きされる(アップデートしないのは論外)
  • 第三者でも再現できるバグであれば、報告した方がみんなが幸せになる
    • プラグイン掲載ページのSupport など

ダメその3 公式テーマの改変

  • 子テーマ を使おう 最低限 style.css のみでOK
  • 当然アップデートで上書きされる(アップデートしないのは論外)
  • 第三者でも再現できるバグであれば、報告した方がみんなが幸せになる
    • プラグイン掲載ページのSupport など

ダメその4  なんでもかんでも functions.php

  • テーマを切り替えると 動作しなくなる機能 はプラグインにすべし
    • カスタム投稿タイプ : register_post_type()
    • カスタム分類(タクソノミー) : register_taxonomy()
    • ショートコード : add_shortcode()
  • 機能と見た目は切り分けよう

ダメその5 とりあえずなPHP

WordPressのテンプレートタグを使おう(一例)

PHP WordPress
mb_substr() wp_trim_words()
mail() wp_mail()
file_get_contents() wp_remote_get()

PHPでもできるけど、他の処理も組み合わせる必要があるなら、初めからそれらが組み合わされているテンプレートタグを使ったほうが良い。


ダメその6 いまだに query_posts() 使ってる

  • ループちゃんと理解してる?
    • メインクエリの改変 : pre_get_posts
    • サブクエリ : WP_Query または get_posts()

ただし、用もないのに pre_get_posts 使ってメインクエリ壊しちゃダメ!


ダメその7 サニタイズ(無害化)なにそれおいしいの?

そのまま echo して本当に大丈夫?
出力も入力も関数使おう
https://codex.wordpress.org/Data_Validation


ダメその8 とりあえずなグローバル変数

安易に $post$wpdb の中身を echo してませんか?

  • get_the_ID() など投稿に関するテンプレートタグ
  • get_queried_object()
  • get_queried_object_id()
  • get_query_var()

ダメその9 PHPでタイムゾーン変えちゃう

  • 9時間ずれてるからってdate_default_timezone_set( 'Asia/Tokyo' ); はやめましょう。
  • date() ではなく WordPress の一般設定のタイムゾーンに合わせてくれる(ローカライズしてくれる) date_i18n() wp_date() を使おう

ダメパターンをなくすために

現場からは以上です。

21
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
19