WPerのWPerによるWPerのための
         PHP入門

   ∼WPer総PHPer化計画発動準備中∼
こんなひとです

          名前 : 藤田 無憂
          所属 : (株)ミツエーリンクス
          職種 : ディレクター
          TW : @anticyborg
          FB : muyuu
          Blog : http://
          stackstock.net/
          Mail :
          anticyborg@gmail.com
はじめに

Program、OK?
はじめに

Program、OK?

No OK?
はじめに

Program、OK?

No OK?

Oh! OK OK!
はじめに

Program、OK?

No OK?

Oh! OK OK!

Leave it to me!
はじめに

Program、OK?

No OK?

Oh! OK OK!

Leave it to me! (オレニ マカセ
ロ)
はじめに

すみません

何となく英語で言いたかっただけです。
はじめに

すみません

何となく英語で言いたかっただけです。

何と言ってもプログラムですからね。
はじめに

すみません

何となく英語で言いたかっただけです。

何と言ってもプログラムですからね。

かっこつけてみただけです。
はじめに

すみません

何となく英語で言いたかっただけです。

何と言ってもプログラムですからね。

かっこつけてみただけです。

OK! I’m Japanese!!
はじめに

すみません

何となく英語で言いたかっただけです。

何と言ってもプログラムですからね。

かっこつけてみただけです。

OK! I’m Japanese!!
はじめに

今日はWPerのためのPHP入門です
はじめに

今日はWPerのためのPHP入門です

みなさんWPerですか?
はじめに

今日はWPerのためのPHP入門です

みなさんWPerですか?

そうでない方もよろしくお願いしますね
はじめに

僕のWPとの出会いは2011年の
WordCamp Tokyo
この日に多くのWPerとの出会いが出来
ました。
はじめに

僕のWPとの出会いは2011年の
WordCamp Tokyo
この日に多くのWPerとの出会いが出来
ました。

いやー、良い日だった(/'□')/
気づいたことが1点

「僕(私)プログラム知りません」な方が
結構多かった印象でした。

でもWP案件を仕事でやっている、と
気づいたことが1点

「僕(私)プログラム知りません」な方が
結構多かった印象でした。

でもWP案件を仕事でやっている、と


え?それでも案件やれるの?
気づいたことが1点

ブログで紹介されているコードをコピペ
すれば何とかなる、という印象を受けた
気づいたことが1点

ブログで紹介されているコードをコピペ
すれば何とかなる、という印象を受けた



すげぇなWordPress!
気づいたことが1点

でも、「本当はコピペじゃなくてちゃん
とPHPを理解したい」って思っている人
も多いんじゃないでしょうか
気づいたことが1点

でも、「本当はコピペじゃなくてちゃん
とPHPを理解したい」って思っている人
も多いんじゃないでしょうか


じゃ、覚えちゃいましょ(/'□')/
Webプログラムについて
サーバサイドとクライアントサイド

通常、Webプログラムは2種類に分類されます

 クライアントサイド

 サーバサイド
サーバサイドとクライアントサイド

通常、Webプログラムは2種類に分類されます

  クライアントサイド

  サーバサイド

ブラウザがページを表示させてから(あるいは表
示させてる途中に)動かすタイプのプログラム
→JavaScript
サーバサイドとクライアントサイド

通常、Webプログラムは2種類に分類されます

  クライアントサイド

  サーバサイド

ブラウザに表示させるページを作るため、サーバ
で実行するタイプのプログラム
→PHP, Ruby, Python
PHPについて

PHPとは
PHP
Hypertext
Pre-processor




なんで「PHP」を展開した言葉にPHPが入ってるん
でしょうね。
PHPについて

PHPとは
PHP
Hypertext
Pre-processor




ま、細かいことは良いとしましょう
とりあえずhtmlを生成するだけ
たったそれだけ!!
とりあえずhtmlを生成するだけ
たったそれだけ!!


  簡単じゃん(/'□')/
でも・・・
そんな事言って、
覚えること、
多いんでしょ?
それがですね、なんと
今ならたったこれだけ
  なんですよ
PHPをやる上で覚えるべき事

PHPを習得するにあたり、これだけ覚えましょ

変数

関数

分岐

配列

繰り返し
PHPをやる上で覚えるべき事




 これだけ(/'□')/
PHPをやる上で覚えるべき事




 これだけ(/'□')/
たぶんこれだけ覚えれば、一通りのことは理解出
来るようになります。やったね!(多分ねー)
そのまえに
htmlファイル上にPHPを埋め込む方法

PHPの楽チンなところは、htmlファイルにちょこ
ちょこっとPHP用の記述を追加すれば良いだけ
htmlファイル上にPHPを埋め込む方法

PHPの楽チンなところは、htmlファイルにちょこ
ちょこっとPHP用の記述を追加すれば良いだけ


<div id=”article”>
 <h2>記事タイトル</h2>
 <div class=”content”>
  ココに本文が入るはずですよー
 </div>
htmlファイル上にPHPを埋め込む方法

PHPの楽チンなところは、htmlファイルにちょこ
ちょこっとPHP用の記述を追加すれば良いだけ


<div id=”article”>
 <h2><?php echo($title); ?></h2>
 <div class=”content”>
  ココに本文が入るはずですよー
 </div>



            ・<?php から ?> までがPHPとして認識されます
            ・echo($title); はPHPの命令です
htmlファイル上にPHPを埋め込む方法

あと一つ、忘れてはいけないことがあります
htmlファイル上にPHPを埋め込む方法

あと一つ、忘れてはいけないことがあります




 ファイルの拡張子を
 「koreha.html」から「koreha.php」に変更しましょう
オッケー☆
変数
変数とは


 変数 = 箱
変数とは


 変数 = 箱
変数とは


 変数 = 箱

 $amazon = 箱

「$」の後に文字が書かれてればそれが箱です。
何でも入ります。そして全国どこでも当日に配s
変数に何かを入れる

$amazon = “nanika”;

$amazon に「nanika」という文字
を入れました
変数に何かを入れる
                         nanika

$amazon = “nanika”;

$amazon に「nanika」という文字
を入れました
変数に何かを入れる
                            nanika

$amazon = “nanika”;

$amazon に「nanika」という文字
を入れました



「nanika」を”と”で囲むのは、”と”の間が「文字」だというお約束があるからです。

あと、何かを書いた後は「;」で終わる、というお約束もあるよー
入れたものを別のものに変える
                       dakara   nanika

$amazon = “nanika”;
//↑nanikaを入れた

$amazon = “dakara”;
//↑dakaraを入れた

薄情にもnanikaを捨ててdakaraをとりまし
た
入れたものを別のものに変える
                        dakara     nanika

$amazon = “nanika”;
//↑nanikaを入れた

$amazon = “dakara”;
//↑dakaraを入れた

薄情にもnanikaを捨ててdakaraをとりまし
た
同じ箱に再度何かを入れたら、前に入れたものはなくなってしまうから気をつけて。
え、じゃあ追記したいときは?
                   dakara nanika

$amazon = “nanika”;
//↑nanikaを入れた

$amazon .= “dakara”;
//↑dakaraを追加

箱が覚えてるのは「nanikadakara」
え、じゃあ追記したいときは?
                   dakara nanika

$amazon = “nanika”;
//↑nanikaを入れた

$amazon .= “dakara”;
//↑dakaraを追加

箱が覚えてるのは「nanikadakara」


箱に追記したい場合は「=」ではなく、「.=」を使えば良いです
覚えたものを表示する

さっき書いたやつを使ってみましょう
覚えたものを表示する

さっき書いたやつを使ってみましょう


<div id=”article”>
 <h2><?php echo($amazon); ?></h2>
 <div class=”content”>
  ココに本文が入るはずですよー
 </div>
覚えたものを表示する

さっき書いたやつを使ってみましょう


<div id=”article”>
 <h2><?php echo($amazon); ?></h2>
 <div class=”content”>
  ココに本文が入るはずですよー
 </div>


<?php と ?> の間に echo(); で「()の中身を表示する」という意味になります。

なので、$amazon の中に入ってるもの、つまり「nanikadareka」が表示されます
覚えたものを表示する

生成されたhtmlではこう表示されます


<div id=”article”>
 <h2>nanikadareka</h2>
 <div class=”content”>
  ココに本文が入るはずですよー
 </div>
覚えたものを表示する

生成されたhtmlではこう表示されます


<div id=”article”>
 <h2>nanikadareka</h2>
 <div class=”content”>
  ココに本文が入るはずですよー
 </div>


ちなみに、「echo」は「声に出す」的な意味ですよー
関数
関数とは


関数 = 工場



工場 = 材料を入れると製品が出てきます


関数 = 使うと何かしらの処理がされます
関数の見分け方

∼ ();
例)
the_content();
bloginfo(‘template_url’);



ポイント : アルファベットの名前の後に ( ) が書かれている

※さっきの echo( $amazon ); も関数ですよー
具体的には?

関数を使うとどういう事が出来るのか

変数の値を変える

変数の文字をurlエンコードする

変数の中に書かれてる文字から特定の文字を変える

変数の中身が空かどうか調べる
使用イメージ
<?php
$anpunch = “あーん、ぱーんち!”;

echo ( ‘普通の「’ . $anpunch . ‘」<br />’) ;

?>




 普通の「あーん、ぱーんち!」<br />
使用イメージ
<?php
$anpunch = “あーん、ぱーんち!”;

$anpunch = urlencode ( $anpunch ) ;
echo ( ‘URLエンコード後の「’ . $anpunch . ‘」’ ) ;

?>




 URLエンコード後の「%e3%81%82%e3%83%bc
 %e3%82%93%e3%80%81%e3%81%b1%e3%83%bc
 %e3%82%93%e3%81%a1%ef%bc%81」
使用イメージ
<?php
$anpunch = “あーん、ぱーんち!”;

$anpunch = urlencode ( $anpunch ) ;
echo ( ‘URLエンコード後の「’ . $anpunch . ‘」’ ) ;
                    ↑           ↑
?>


ちなみに、文と文を繋ぐ場合は、「.」を使います

足すイメージでいてくれれば良いかと思います
関数を自作する

関数は自分で作る事も出来ます。
「このサイトに限り汎用性が高い処理」ってある
と思うんです。


そういう処理は関数にして、そのサイトではいつ
でも使えるようにしましょう!
関数を自作する

例えば、
「記事タイトルの先頭に【絶品!】と入れたい」


functions.php
<?php
function ore_the_title ( ) {
  echo ( “【絶品!】” );

  the_title();
?>
関数を自作する

例えば、
「記事タイトルの先頭に【絶品!】と入れたい」


header.php
<head>
<meta charset=”utf-8” />
<title><?php ore_the_title (); ?></title>
</head>
関数を自作する

例えば、
「記事タイトルの先頭に【絶品!】と入れたい」


html
<head>
<meta charset=”utf-8” />
<title>【絶品!】記事タイトル</title>

</head>
条件分岐
条件分岐とは
条件分岐とは
条件分岐とは
条件分岐とは

「Aだったら右手でお前を殴る」
条件分岐とは
条件分岐とは

「Aだったら右手でお前を殴る」

「Bだったら左手でお前を殴る」
条件分岐とは
条件分岐とは

「Aだったら右手でお前を殴る」

「Bだったら左手でお前を殴る」

「どっちでもなければ蹴っ飛ばす!」
条件分岐とは
条件分岐とは

「Aだったら右手でお前を殴る」

「Bだったら左手でお前を殴る」

「どっちでもなければ蹴っ飛ばす!」

でおなじみのジャイアニズムです
条件分岐とは
条件分岐とは

「Aだったら右手でお前を殴る」

「Bだったら左手でお前を殴る」

「どっちでもなければ蹴っ飛ばす!」

でおなじみのジャイアニズムです


「条件」によって行動が「分岐する」から
条件分岐とは
条件分岐とは

「Aだったら右手でお前を殴る」

「Bだったら左手でお前を殴る」

「どっちでもなければ蹴っ飛ばす!」

でおなじみのジャイアニズムです



「条件」「分岐」です
条件分岐とは
条件分岐とは

「Aだったら右手でお前を殴る」

「Bだったら左手でお前を殴る」

「どっちでもなければ蹴っ飛ばす!」

でおなじみのジャイアニズムです


ここでは「if文」という条件分岐を使いましょう
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

if文はだいたいこんなコードになります
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

もし、test という箱の中身が1だったら
例題
<?php
$test = 1;
if ( $test == 1 ) {          ワンポイント!
  echo ( "右手でお前を殴る" );       ( )の中にある「==」は
} else if ( $test == 2 ) {   イコールという意味です。
  echo ( "左手でお前を殴る" );
                             変数の時は「=」でイコールでは
} else {                     なく何かを入れる「代入」として
  echo ( "蹴っ飛ばす!" );         使ってましたね。ややこしいけど
                             そういうもんだと思って下さい
}
?>

もし、test という箱の中身が1だったら
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

もし、test という箱の中身が1だったら

{ }の中に書いてある事を実行します
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>


のびたを右手でぶん殴ります
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

test という箱の中身が1ではなく、
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

test という箱の中身が1ではなく、2だったら
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

test という箱の中身が1ではなく、2だったら

{ }の中に書いてある事を実行します
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>


のびたを左手でぶん殴ります
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

test という箱の中身が1でも2でもなければ
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>

test という箱の中身が1でも2でもなければ

{ }の中に書いてある事を実行します
例題
<?php
$test = 1;
if ( $test == 1 ) {
  echo ( "右手でお前を殴る" );
} else if ( $test == 2 ) {
  echo ( "左手でお前を殴る" );
} else {
  echo ( "蹴っ飛ばす!" );
}
?>


のびたのくせにー!!
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<head>
<meta charset=”utf-8” />
<title><?php if(is_single()){the_title();echo(” |
”);}bloginfo('name');?></title>
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<head>
<meta charset=”utf-8” />
<title><?php if(is_single()){the_title();echo(” |
”);}bloginfo('name');?></title>




ごちゃごちゃしとるっΣ(゚д゚lll)
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<head>
<meta charset=”utf-8” />
<title><?php if(is_single()){the_title();echo(” |
”);}bloginfo('name');?></title>




ごちゃごちゃしとるっΣ(゚д゚lll)
何書いてるか分からーん(/'□')/
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<title><?php if(is_single()){the_title();echo(” |
”);}bloginfo('name');?></title>




 ちょっとだけ見やすくしましょうね。

 タイトルタグだけにして、
WordPressだと…

titleタグにごにょごにょ書いてることが多いです
       ↓                    ↓           ↓
<title><?php if(is_single()){the_title();echo(” |
”);}bloginfo('name');?></title>
  ↑↑                ↑↑




 改行を入れて見やすくしましょう
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<title>
<?php
   if ( is_single() ) {
     the_title();
     echo(” | ”);
   }
   bloginfo('name');
?>
</title>

 ついでにスペースを追加!!
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<title>
<?php
   if ( is_single() ) {
     the_title();
     echo(” | ”);
   }
   bloginfo('name');
?>
</title>

 is_single() は「今のページが個別記事か否か」を判定する関数です。
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<title>
<?php
   if ( is_single() ) {
     the_title();
     echo(” | ”);
   }
   bloginfo('name');
?>
</title>

 is_single() は「今のページが個別記事か否か」を判定する関数です。
 個別記事だったら{}内を実行します。
WordPressだと…

titleタグにごにょごにょ書いてることが多いです

<title>
<?php                        ・トップページ
   if ( is_single() ) {      ブログ名
     the_title();
     echo(” | ”);            ・個別記事
   }                         記事タイトル | ブログ名
   bloginfo('name');
?>
</title>

 the_title(); は、記事タイトルを表示する関数です。

 なので、「echo();」は必要ありません。
意外に簡単でし ?
       ょ
配列
配列とは


 配列 = 箱の箱
配列とは


 配列 = 箱の箱
配列とは


 配列 = 箱の箱
配列とは


 配列 = 箱の箱

 $amazons = 箱の
 箱
配列とは

例えば、配送する商品がたくさんあって、それを全
部憶えておかないといけない時はどうなりますかね
配列とは

例えば、配送する商品がたくさんあって、それを全
部憶えておかないといけない時はどうなりますかね



$amazon1 = “nanika”;
$amazon2 = “dareka”;
$amazon3 = “dokoka”;


こうなりますよね
配列とは

で、その商品全てを表示したい場合はどうすれば良
いでしょうか

<?php
echo $amazon1;
echo $amazon2;
echo $amazon3;
?>
配列とは

で、その商品全てを表示したい場合はどうすれば良
いでしょうか

<?php
echo $amazon1;
echo $amazon2;
echo $amazon3;
?>
3つならまだいいけど、

1万とかあったらぞっとしますね
ここで配列と
繰り返しですよ
配列とは

配列を使って、さっき書いた変数をひとかたまりに
まとめてしまいましょう。

<?php
$amazons = array(
  “nanika” ,
  “dareka” ,
  “dokoka” );
?>
配列とは

配列を使って、さっき書いた変数をひとかたまりに
まとめてしまいましょう。

<?php
$amazons = array(
  “nanika” ,        $amazons[0] に “nanika”
  “dareka” ,        $amazons[1] に “dareka”
  “dokoka” );       $amazons[2] に “dokoka”
?>                  が入ってます
配列の表示方法

表示したいときは、繰り返しの処理を使います


<ul>
<?php
foreach ($amazons as $i ) {
   echo (“<li>” . $i . “</li>”);
}
?>
</ul>
配列の表示方法

表示したいときは、繰り返しの処理を使います


<ul>
<?php      ↓この箱(配列)に入ってる箱(変数)の数だけ繰り返す

foreach ($amazons as $i ) {
   echo (“<li>” . $i . “</li>”);
}
?>
</ul>
配列の表示方法

表示したいときは、繰り返しの処理を使います


<ul>
<?php                      ↓$amazon[0]とかを仮に$iとする

foreach ($amazons as $i ) {
   echo (“<li>” . $i . “</li>”);
}
?>
</ul>
配列の表示方法

表示したいときは、繰り返しの処理を使います


<ul>
<?php
foreach ($amazons as $i ) {
   echo (“<li>” . $i . “</li>”); ← { と } の間に繰り返し行う処理を書く
}
?>
</ul>
配列の表示方法

生成されたhtmlはこんな感じになります


<ul>
<li>nanika</li>
<li>dareka</li>
<li>dokoka</li>
</ul>
配列の表示方法

わーい
一つにまとまったぞー
わーいわーい

見やすくなったぞー
わーいわーい
繰り返し
繰り返しとは

さっき繰り返しの処理について説明しましたが、
WPでよく使う繰り返しちょっと別のヤツです
繰り返しとは

さっき繰り返しの処理について説明しましたが、
WPでよく使う繰り返しちょっと別のヤツです




              ここ辺で使うヤツね
繰り返しとは

ここはこういった処理になってます


<?php while ( have_posts () ) : the_post(); ?>
<h1><?php the_title();?></h1>
<?php the_content(); ?>
<?php endwhile; ?>
繰り返しとは

ここはこういった処理になってます


<?php   ←改行!
while ( have_posts () ) :   ←改行!
     the_post(); ←改行!
?>
<h1><?php the_title();?></h1>
<?php the_content(); ?>


<?php endwhile; ?>
繰り返しとは

ここはこういった処理になってます


<?php
while ( have_posts () ) : ← これは「 { 」の代わりに「:」
     the_post();           を使ってます
?>
<h1><?php the_title();?></h1>
<?php the_content(); ?>


<?php endwhile; ?>
繰り返しとは

ここはこういった処理になってます


<?php
while ( have_posts () ) :
     the_post();
?>
<h1><?php the_title();?></h1>
<?php the_content(); ?>


<?php endwhile; ?> ← ここも「 } 」の代わりに
                     「endwhile;」を使ってます
繰り返しとは

ここはこういった処理になってます


<?php
                              have_posts ( ) で、このページ
while ( have_posts () ) :
                              に表示する記事の数が出る
     the_post();
?>
                            while ( have_posts( ) ) で、記
<h1><?php the_title();?></h1>
                            事の数だけ繰り返す、という
<?php the_content(); ?>
                            意味になります。

<?php endwhile; ?>
最後に
ホントはもっと色々できる子なんです

ここで紹介したものは、本当に基本の基本です。
正直、PHPの力の片鱗も見せられていませんorz
ホントはもっと色々できる子なんです

ここで紹介したものは、本当に基本の基本です。
正直、PHPの力の片鱗も見せられていませんorz



もっとできる子なんです!
PHPはもっとできる子なんです!
具体的には?

たとえばこんな事が出来ますよ

記事内の特定の箇所だけ日時指定で表示を切り替え

フッターのコピーライト表示を自動で年表記切替

ファイルのあるなしを判別して、あれば表示する
具体的には?

たとえばこんな事が出来ますよ

記事内の特定の箇所だけ日時指定で表示を切り替え

フッターのコピーライト表示を自動で年表記切替

ファイルのあるなしを判別して、あれば表示する



どうです?便利そうでしょ?
まずは「こんなんできる?」を
  探してみましょう!

WPerのWPerによるWPerのためのPHP入門