- 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() |
- https://developer.wordpress.org/reference/functions/wp_trim_words/
- https://developer.wordpress.org/reference/functions/wp_mail/
- https://developer.wordpress.org/reference/functions/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()
を使おう
ダメパターンをなくすために
- 最新の情報なのかリファレンスを確認しよう
- テーマやプラグインのハンドブック読もう
現場からは以上です。