SlideShare a Scribd company logo
1 of 89
Download to read offline
WordPressあるある
2016年版
2014年、夏
セッション時間を
1/2で終わらせた
WordPress
失敗あるある
あの悲劇から2年
分かりづらい
資料の
全てを直して
帰ってきた!
説明しやすい
テンパらない
早く終えない
これで今日は
頑張ります!
自己紹介
★ 所属
Web業界で5年ちょい、Si業界で半年

画面 (HTML/CSS/JS)

サーバー (PHP/C#)

DB (MySQL/Oracle)
テクノブレイブ名古屋オフィス → 会社

WordBench名古屋 → 勉強会コミュニティ

ミスリーズ → 卓球チーム
★ 技術
1
自己紹介
★ 所属
Web業界で5年ちょい、Si業界で半年

画面 (HTML/CSS/JS)

サーバー (PHP/C#)

DB (MySQL/Oracle)
テクノブレイブ名古屋オフィス → 会社

WordBench名古屋 → 勉強会コミュニティ

ミスリーズ → 卓球チーム
★ 技術
1
このセッションについて
★対象
WordPressをじっくり勉強してる人

WordPressを通じて多角的に知識を吸収したい人

CMSを一度あきらめた人
2
WordPress運営、
制作に対し意欲ある初級者
このセッションの目的 3
WordPressを利用してて
よくある問題を例に挙げ
解決の糸口を見つけられる
講座にしたいと思います
WordPressあるある
俺のサイトが
とにかく白い件
Web制作者P氏の証言
WordPressが白い原因は? 4
PHPのエラーによる
プログラムの中断
どんな時にエラーになるの?
何が原因でエラーになるの? 5
• 文字コードの設定ミス
• XMLのDoctype宣言
• 古いプラグインの利用
• プラグイン入れすぎ
可能性 小
可能性 大
何が原因でエラーになるの? 6
★ 文字コードの設定ミス
• XMLのDoctype宣言
• 古いプラグインの利用
• プラグイン入れすぎ
可能性 小
可能性 大
文字コードの設定はUTF-8 7
★ 文字ルール違反でエラーになる可能性がある
• プログラム内で日本語使ってるとダメかも
★ 文字化け回避の為にもUTF-8で保存しよう
• 最近のエディタは初期設定がUTFだよ
• タダの奴ならGithubのAtomがオススメ
最近だとあまりないかも
何が原因でエラーになるの? 8
• 文字コードの設定ミス
★ XMLのDoctype宣言
• 古いプラグインの利用
• プラグイン入れすぎ
可能性 小
可能性 大
XMLで宣言する時はエスケープ 9
<?xml version= 1.0 … ?>
• 色の違う<? ?>がphpと解釈される場合がある
• php.iniのshort_open_tagディレクティブを無効にする
• ↑php 5.2のphp.iniでもデフォルトは無効
• <?php echo <?xml … ?> ; ?> phpから出力する
あんまり気にしなくていい
何が原因でエラーになるの? 10
• 文字コードの設定ミス
• XMLのDoctype宣言
★ 古いプラグインの利用
• プラグイン入れすぎ
可能性 小
可能性 大
古いプラグインの利用はやめよう 11
★ 廃止された関数が使われている可能性がある
• 関数未定義エラーでプログラムが停止する
★ 非推奨の関数が使われている可能性がある
• 闇プログラマーの攻撃対象になる可能性がある
• コードの性能が悪い可能性がある
何が原因でエラーになるの? 12
• 文字コードの設定ミス
• XMLのDoctype宣言
• 古いプラグインの利用
★ プラグイン入れすぎ
可能性 小
可能性 大
プラグインは必要最低限にしよう 13
★ プラグインが原因で競合を引き起こす
• テーマが原因であったり
• 別のプラグインが原因であったり
• アップデートが原因であったり
★ で、競合ってなに?

自分が考えられる範囲で例を挙げます
functions.phpに関数を書き出す
使うからロックするわ ロックされとるやん
ほな先にこっちやるから
ロックするわこっちやったらロック解除するわ
その関数あるで
関数名がかぶった!
デッドロック
とある表A
とある表B
① ②
③④
例 1
例 2
プラグインA プラグインB
プラグインA
更新がされてない
あんまり利用者がいない
プラグインを利用する際は
注意してください
画面が白くなるのはPHPのエラー 14
PHPのエラーを知ることが解決への最善手
• プログラムが中断するエラーは2種類ある
• 致命的なエラー Fatal Error
• 構文エラー Parse Error
コード書いてると良く遭遇します
致命的なエラー Fatal Error
何すると致命的なの?
• 未定義の関数やクラスを呼び出す
• 同じ名前の関数を作成する
• 変数で初期化したのに配列として使う
15
…変数で初期化したのに?ん??
変数で初期化したのに配列として使う 16
$var = variant ;
$var[] = out ;
文字列ね
配列…だと!?
文字列で決まると配列にできない
構文エラー Parse Error
ルール違反はダメ
• 行末にセミコロンがない
• の閉じ忘れ ; にする
• function{の閉じ忘れfunction{};にする
17
行数が多いと猛威を振るいます
WordPressでのデバック 18
オススメ方法
• エラーを画面に表示する
• エラーをログに出力する
WordPressで設定できる
WordPressでのデバック 19
オススメ方法
• エラーを画面に表示する
• エラーをログに出力する
wp-config.phpの設定をする
wp-config.phpって?
WordPressの設定ファイル
• DBの設定を書き込んだり
• 一時保存情報の暗号化を行ったり
• テーマディレクトリなどのパスの設定ができたり
• 初期状態は
root/wp-config-sample.phpという名前
20
デバック表示の設定の方法
デバックの設定(ページへ出力)
• 初期状態ではファイルのリネームが必要
• wp-config.php
84行目付近の定数の値を変更する
define('WP_DEBUG', false);
define('WP_DEBUG', true);
21
真っ白い画面にエラーがでる
WordPressでのデバック 22
オススメ方法
• エラーを画面に表示する
• エラーをログに出力する
画面にエラー出したく無いよ!
デバック出力の設定の方法
デバックの設定(ログへ出力)
定数で条件分岐しておまじないを書く
define('WP_DEBUG', true);
if(WP_DEBUG) {
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
}
23
デバック出力の設定の方法
デバックの設定(ログへ出力)
24
//wp-content/debug.logへ出力
define( 'WP_DEBUG_LOG', true );
//エラーを画面に表示しない
define( 'WP_DEBUG_DISPLAY', false );
//エラーを画面に表示しない
@ini_set( 'display_errors', 0 );
これで画面を汚すことはありません!
警告と注意レベルのエラー
プログラムが中断しないエラー
• メッセージが出力される
• プログラムは中断しない
• パフォーマンスが落ちたりする
• 処理をすっとばして完了する
25
警告と注意レベルのエラー
プログラムが中断しないエラー
• メッセージが出力される
• プログラムは中断しない
• パフォーマンスが落ちたりする
• 処理をすっとばして完了する
26
注意 notice レベルエラーの例
配列の添字にコーテーションをつけない
• $[id]とした場合
• $[ id ]とした場合よりも
• 参照に2-2.5倍ほどコストがかかる
• 10万回参照した場合平均で0.2­0.3秒差
27
パフォーマンスに明らかな差がある
警告と注意レベルのエラー
プログラムが中断しないエラー
• メッセージが出力される
• プログラムは中断しない
• パフォーマンスが落ちたりする
• 処理をすっとばして完了する
28
警告 warning レベルエラーの例
処理が完了しなくて困るシリーズ
• 権限が違くて、書き込めない
• 所有者が違くて書き込めない
• ファイルパスが違くて書き込めない
29
処理が完了しなくて困る
警告と注意レベルのエラー
プログラムが中断しないエラー
• メッセージが出力される
• プログラムは中断しない
• パフォーマンスが落ちたりする
• 処理をすっとばして完了する
30
警告も注意も修正しよう!
WordPressあるある
俺のサイトの
文字がなんかヤバイ件
"親è²ãã®ç¡éç ²ã§å°ä¾ã®æããæã°ãããã¦ãããå°å¦æ ¡ã«å±ãæåå¦æ ¡ã®äºéããé£ã³éãã¦ä¸é±éã»ã©è
°ãæãããäºãããããªããããªç¡éãããã¨èã人ãããããç¥ãã¬ãå¥æ®µæ·±ãçç±ã§ããªããæ
°ç¯ã®äºéããé¦ãåºãã¦ããããåç´çã®ä¸äººãåè«ã«ããããå¨å¼µã£ã¦ããããããé£ã³éããäºã¯åºæ¥ã¾ããå¼
±è«ãã¼ããã¨åããããã§ãããå°ä½¿ã«è² ã¶ãã£ã¦å¸°ã£ã¦æ¥ãæããããã大ããªç¼ããã¦äºéãããããé£ã³éãã¦è
°ãæãã奴ããããã¨äºã£ãããããã®æ¬¡ã¯æãããã«é£ãã§è¦ãã¾ãã¨çãããï¼é空æ庫ããï¼è¦ªè²ãã®ç¡éç
²ã§å°ä¾ã®æããæã°ãããã¦ãããå°å¦æ ¡ã«å±ãæåå¦æ ¡ã®äºéããé£ã³éãã¦ä¸é±éã»ã©è
°ãæãããäºãããããªããããªç¡éãããã¨èã人ãããããç¥ãã¬ãå¥æ®µæ·±ãçç±ã§ããªããæ
°ç¯ã®äºéããé¦ãåºãã¦ããããåç´çã®ä¸äººãåè«ã«ããããå¨å¼µã£ã¦ããããããé£ã³éããäºã¯åºæ¥ã¾ããå¼
±è«ãã¼ããã¨åããããã§ãããå°ä½¿ã«è² ã¶ãã£ã¦å¸°ã£ã¦æ¥ãæããããã大ããªç¼ããã¦äºéãããããé£ã³éãã¦è
°ãæãã奴ããããã¨äºã£ãããããã®æ¬¡ã¯æãããã«é£ãã§è¦ãã¾ãã¨çãããï¼é空æ庫ããï¼è¦ªè²ãã®ç¡éç
²ã§å°ä¾ã®æããæã°ãããã¦ãããå°å¦æ ¡ã«å±ãæåå¦æ ¡ã®äºéããé£ã³éãã¦ä¸é±éã»ã©è
°ãæãããäºãããããªããããªç¡éãããã¨èã人ãããããç¥ãã¬ãå¥æ®µæ·±ãçç±ã§ããªããæ
°ç¯ã®äºéããé¦ãåºãã¦ããããåç´çã®ä¸äººãåè«ã«ããããå¨å¼µã£ã¦ããããããé£ã³éããäºã¯åºæ¥ã¾ããå¼
±è«ãã¼ããã¨åããããã§ãããå°ä½¿ã«è² ã¶ãã£ã¦å¸°ã£ã¦æ¥ãæããããã大ããªç¼ããã¦äºéãããããé£ã³éãã¦è
°ãæãã奴ããããã¨äºã£ãããããã®æ¬¡ã¯æãããã«é£ãã§è¦ãã¾ãã¨çãããï¼é空æ庫ããï¼è¦ªè²ãã®ç¡éç
²ã§å°ä¾ã®æããæã°ãããã¦ãããå°å¦æ ¡ã«å±ãæåå¦æ ¡ã®äºéããé£ã³éãã¦ä¸é±éã»ã©è
°ãæãããäºãããããªããããªç¡éãããã¨èã人ãããããç¥ãã¬ãå¥æ®µæ·±ãçç±ã§ããªããæ
°ç¯ã®äºéããé¦ãåºãã¦ããããåç´çã®ä¸äººãåè«ã«ããããå¨å¼µã£ã¦ããããããé£ã³éããäºã¯åºæ¥ã¾ããå¼
±è«ãã¼ããã¨åããããã§ãããå°ä½¿ã«è² ã¶ãã£ã¦å¸°ã£ã¦æ¥ãæããããã大ããªç¼ããã¦äºéãããããé£ã³éãã¦è
°ãæãã奴ããããã¨äºã£ãããããã®æ¬¡ã¯æãããã«é£ãã§è¦ãã¾ãã¨çãããï¼é空æ庫ããï¼è¦ªè²ãã®ç¡éç
²ã§å°ä¾ã®æããæã°ãããã
なんかやばい
とてつもなく
ヤバイ
サイトがヤバイことになっている
文字化けですね
• 文字化けとはなにか
• どうすればいいのか
31
PCの文字表示
文字化けを語る前に
• PCは文字を読めない
• 「あ」を「あ」と認識できない
32
文字コード
e30102
対応フォント
あ
PCが文字に表示されるまで
UTF-8の「あ」が分かるフォントによって表現される
文字化けについて
WordPressの場合
33
®æ
なんやそれ e30102UTF-8
e30102を理解できないとアウト
ウェブブラウザ Webサーバー(apache)
PHP
DB
サイトがヤバイことになっている
文字化けですね
• 文字化けとはなにか
• どうすればいいのか
34
文字化けへの対処 35
文字が全部分かるようにしておく
ウェブブラウザ
Webサーバー(apache)
PHP
DB
HTMLで規定 設定ファイル 設定
文字化けへの対処 36
ウェブブラウザ Webサーバー/PHP DB
HTMLで規定 設定ファイル 設定
• ブラウザにUTF-8で文字コードを理解してもらう
• HTMLのmeta要素のcharset属性
• UTF-8を設定する
文字化けへの対処 37
ウェブブラウザ Webサーバー(apache)
PHP
DB
HTMLで規定 設定ファイル 設定
• .htaccessかサーバーの設定ファイルを編集する
• AddDefaultCharset UTF-8を設定する
• UTF-8として文字コードを認識するようになる
文字化けへの対処 38
ウェブブラウザ Webサーバー(apache)
PHP
DB
HTMLで規定 設定ファイル 設定
• DB作成時
• utf-8 general_ciを設定する
• DBがUTF-8を認識できるようになる
サイトがヤバイことになっている
文字化けですね
• 文字化けとはなにか
• どうすればいいのか
39
ファイルはUTF-8で保存しましょう
UTF-8でのファイル保存
エディタ
• SublimeTextシリーズ
• PHPStorm
• Atom
40
この辺はデフォルトでUTF-8で保存かも
UTF-8でのファイル保存
BOMについて
• BOMはByteOrderMarkの略
• UTF-8と認識するための印を先頭につける
• BOMがないと、UTF-8と認識
できないアプリもある
41
WordPressはBOMなしで保存
WordPressあるある
俺のサイトが
表示されない件
Webサイトにアクセスできない 42
経験則からの原因の列挙
• Webサイトへのアクセスが集中している
• サーバーが落ちている
• ドメインの失効
Webサイトにアクセスできない 43
経験則からの原因の列挙
• Webサイトへのアクセスが集中している
• サーバーが落ちている
• ドメインの失効
Webサイトへのアクセス集中 44
何で集中するとサイトが開けないのか
• サーバーでの設定値より多く人が来た
• 要求された処理がサーバーの許容量を超えた
わかりづらいので図にしてみる
Webサイトへのアクセス集中 45
サーバーでの設定値より多く人が来る
キャパオーバーの例
200人以上
で入場制限
サーバー資源を沢山使う要求
サーバー資源を沢山使う要求
200人以上の要求
対応できない
入場制限の帯域拡張 46
サーバー設定の変更
• 許容値の拡張
• サーバーの設定を変更する
• サーバーの再起動を行う
• 一度全プロセスをバルスする
• 不要アクセスの排除
• 怪しい国からのアクセスを減らす
手っ取り早いのはサーバーの増設
Webサイトへのアクセス集中 47
サーバーでの設定値より多く人が来る
キャパオーバーの例
200人以上
で入場制限
サーバー資源を沢山使う要求
サーバー資源を沢山使う要求
200人以上の要求
対応できない
許容量オーバーへの対処 48
サーバ負荷の低減
• 負荷のかかるSQLの見直し
• 負荷のかかるプログラムの見直し
• 不要アクセスの排除
手っ取り早いのはサーバーの増設
サーバートラブルは
リソースの増設が近道
と、いうことゎ
金で解決できるね!
WordPressあるある
カスタム投稿が
表示できない件
カスタム投稿が表示されないよ? 49
投稿ができるようにするだけじゃダメ
• 表示するテンプレートを用意する
• 投稿を表示するプログラムを作成する
多少プログラミングする必要がある
表示用テンプレートを用意する 50
必要なファイル
single.php
• カスタム投稿ページを表示するのに必要
single-type.php  
• カスタム投稿専用個別ページを表示するのに必要
• typeは投稿タイプ名
• register_post_type( こいつ ,$args);
single-type.phpがいい理由
おぼろげな記憶 51
single.php   コーディング量増える
single-type.php   コーディング量節約
専用のテンプレ作った方が楽
カスタム投稿が表示されないよ? 52
投稿ができるようにするだけじゃダメ
• 表示するテンプレートを用意する
• 投稿を表示するプログラムを作成する
single-type.phpがある前提
表示用プログラム 53
テンプレートがデータもった状態から始まるので
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; ?>
<?php endif; ?>
<?php
//the_content();とかthe系の関数の利用が可能
?>
the系の関数 54
投稿の内容を表示できるプログラム
• the_title(); タイトルの表示
• the_content();  投稿内容の表示
• the_permalink(); 投稿のURL表示
the_postとendifの間に挟む
たとえば・・・ 55
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; ?>
<?php endif; ?>
<div class= postTitle ><?php the_title(); ?></div>
<div class= postNaiyou ><?php the_content(); ?></div>
このページへリンクを貼れば
カスタム投稿が表示できる
投稿タイトル、内容が表示されるはず
おまけ
WordPressは
勉強がしやすいよ!
WordPressは勉強しやすい 56
理由その1:利用者が多い
• ノウハウを持ってる人が多い
• コミュニティ活動が盛んに行なわれている
理由その2:資料がタダで見れる
• ER図などは公開されている
• 関数の利用方法なども公式ページで見れる
名古屋にもあります
WordBench名古屋 57
勉強したい人、登壇したい人
お待ちしてます!
WordBench名古屋とは
• 勉強会を毎月開催
• HTMLからサーバーまで
WordPressに関わることを勉強
• 講師はメンバーが担当してます!
詳しくはコチラ!
WordPressは勉強しやすい 58
理由その1:利用者が多い
• ノウハウを持ってる人が多い
• コミュニティ活動が盛んに行なわれている
理由その2:資料がタダで見れる
• ER図などは公開されている
• 関数の利用方法なども公式ページで見れる
名古屋にもあります
Codex 公式マニュアル 58
超お手軽に学習可能です!
公式のWeb資料
• Codexと検索すれば一番上に出ます
• 作業に必要な情報が沢山載ってます
• フォーラムがあり、
  毎日質問と回答が飛び交ってます
WordPressあるある
うちの会社が
仲間を募集してる件
テクノブレイブ
• 人数 250人以上
• 本社 名古屋 東京
• 拠点 名古屋、福岡、タイ 
• 事業 システムコンサル
       インフラコンサル
       受託開発
会社の詳細は今日貰った
ビニールバックに入ってます!
詳しくは…
仲間募集してます!
• プログラム書ける人
• 書けないけどデザイン得意な人
• 書けないけど夢がある人
• 書けないけどやる気ある人
• 人付き合い上手な人
いいところ
東京に
たまにいけるところ!
いいところ
意見が形だけでも
社長まで届くところ!
いいところ
助けあえる
仲間がいるところ!
これからなところ
内緒で聞いてね!
ご清聴ありがとう
ございました

More Related Content

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

2016WordFes