PHPを学び始めたので、まずはオンライン講座で学習したことをまとめます。
講座では、Wordpressでブログを作りながらPHPを学ぶという流れでした。
目次
- カリキュラムで学んだこと一覧
- SLスタジオで学習して補充した知識
- 課題
カリキュラムで学んだこと一覧
あとで参照した時に索引のように使えるように、参考サイトと一緒に一覧にします。
- Mac:ターミナル、Windows:コマンドプロンプトについて
- Mac:ターミナル、Windows:コマンドプロンプトの基本的なコマンド
- Mac:ターミナル、Windows:コマンドプロンプトでPHPファイルを実行する
- PHPの記述方法
https://www.modis.co.jp/candidate/insight/column_40 - PHP.iniファイルの設定
https://www.tairaengineer-note.com/how-to-check-php-ini/ - 変数について
- 演算子の使い方:代数演算子、加算子/減算子、文字列演算子、代入演算子、比較演算子
- 配列
- while文とは
- for文とは
- 条件分岐とは
- 論理演算子:and、or
- 連想配列とは
- wordpressブログ作成とPHP
- テーマの変更方法
- 自動インデントのコマンド
-"Shift"+"Alt"+"F"を押すと自動でインデントがつく。
ただし、PHPフォーマッタをインストールする必要がある。←プラグイン「PHP Intelephense」などをインストールする。
インストールするとテンプレートタグがエラー表示になるため、設定を変える必要がある。(Windowsの場合)ファイル>ユーザー設定>設定>「undefined functions」を検索して、チェックボックスを外す⇒エラーが出なくなる。 - テーマの変更方法
https://lucy.ne.jp/bazubu/how-to-change-wp-theme-23116.html#:~:text=1-2-1 - テンプレート階層とは
https://wp-exp.com/blog/template-hierarchy/ - プラグイン「Query Monitor」を使ってファイルを確認する
- オリジナルテーマの最小構成
https://webst8.com/blog/wordpress-theme-howto-make/ - 子テーマの作成
https://www.conoha.jp/lets-wp/wp-childtheme/
https://miya-system-works.com/blog/detail/152 - ベーステーマ「Clean Blog」を使ってオリジナルブログを作成する
- テンプレートタグとは
https://digitor.jp/textbook/template-tag/ - 記事のタイトルを表示する-<?php the_title();?>
https://deep-blog.jp/engineer/15060/#:~:text=%E6%8A%95%E7%A8%BF%E8%A8%98%E4%BA%8B%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%82%92,get_the_title()%E3%82%92%20%E4%BD%BF%E3%81%84%E3%81%BE%E3%81%99%E3%80%82 - 記事の投稿者を表示する-<?php the_author();?>
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_author - PHPループとは
https://digitor.jp/textbook/wordpress-loop/ - 投稿の数だけ記事を表示させるループの記述方法
https://php1st.com/1202<?php while (have_posts()) : the_post(); ?> ~~(繰り返したい内容)~ <?php endwhile ?>
- 記事の投稿日を表示させる
-<?php echo date('y/n/d'); ?>、<?php the_time( get_option( 'date_format' ) ); ?>
https://thewppress.com/libraries/get-the-date/ - 記事の抜粋を取得・表示させる
-抜粋を表示:<?php the_excerpt();?>
抜粋の表示を確認する方法:「lorem ipsum」と検索し、表示されるダミーテキストをコピペして確認する
https://teru-hide.com/wordpress-how-to-use-the-excerpt/ https://dic.nicovideo.jp/a/lorem%20ipsum - 投稿の個別ページ作成-the_permalink
- テンプレートファイルをパーツにする
-index.htmlからhead部分をまるまる切り取る。header.phpファイルを作り、それを貼り付ける。
footerにあるscript要素群を切り取る。footer.phpファイルを作成し、それを貼り付ける。
元の場所(呼び出したい場所)にそれぞれ<?php get_header();?>、<?php get_footer();?>を張り付ける。
http://wordpress.hitsuji.me/template-parts/ - テンプレートファイルのパスの取得方法-header.phpとfooter.phpファイルのlinkの一部を<?php echo get_template_directory_uri();?>に書き換える、「https」を消す
- 様々な箇所のパーツファイル化-navやfooterの残りを切り取り、新しいファイルに貼り付け、元の場所には<?php get_template_part('フォルダ名/ファイル名')?>を記載
- 投稿の詳細ページに各情報を出力させる-<?php the_title();?>、<?php the_content(); ?>
- 投稿のアイキャッチ画像を設定する
-functions.phpファイルを作成し、以下の関数を記述することで、投稿編集画面にアイキャッチ画像の欄が表示される。
表示させたい場所に<?php the_post_thumbnail();?>を記述。<?php add_action('init',function(){ add_theme_support('post-thumbnails'); }); ?>
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_post_thumbnail - 言語の属性を判断して表示するように設定する-<?php language_attributes();>
https://prorautatie.net/wp-language_attributes/ - body要素に異なるclassを設定する-<?php body_class(); ?>
https://on-ze.com/archives/1316 - アクションを起動する-header.phpのトップに<?php wp_body_open();?>を記述
- 個別ページのテンプレート作成
-page.phpファイルを作成。
header、footerの呼び出しなどを行う。
bodyの中身は<?php the_title();?>、<?php the_content(); ?>で呼び出す。
- サムネイル画像を呼び出す関数をパーツ化
-function.phpファイルに以下を記述サムネイルを表示させたい場所には<?php $img = get_thumbnails(); ?>を記述。function get_thumbnails(){ if (has_post_thumbnail()) : $id = get_post_thumbnail_id(); $img = wp_get_attachment_image_src($id, 'full'); else : $img = array(get_template_directory_uri() . '画像のパス'); endif; return $img; }
https://thewppress.com/libraries/get-theme-directory-url-and-path/ https://www.webdesignleaves.com/pr/wp/wp_post_thumbnail.html - パーマリンクの編集
-投稿/個別ページ編集画面の右側に表示されるURLをクリックする。
もしくは、画面左側メニューの設定>パーマリンクから、パーマリンクの設定方法を変更することもできる。
- お問合せフォームを作るプラグイン「MW WP Form」
https://form.run/media/contents/website-lp-creation/mw-wp-form/ - カテゴリーとタグ
- カテゴリー一覧ページの作成
-管理画面>設定>カテゴリーベースに入力した文字が、カテゴリー一覧ページのURLに表示される。
archive.phpファイルを作り、index.phpファイルの中身をコピペする。
h1のタイトルを編集し、その下に表示するspanタグのサブタイトルには、<? php wp_title(); ?>でカテゴリー名を取得・表示するとよい。
https://seigetsu-web.com/wordpress-function-wp_title/ - タグ一覧ページや投稿者一覧ページを作る
-テンプレート階層で同じarchive.phpファイルに属しているページの表示を変える。
以下のように記述する。
<?php if(is_category()):?> <h1>Category</h1> <?php elseif(is_author()) :?> <h1>Author</h1> <?php elseif(is_date()) :?> <h1>Date</h1> <?php else :?> <h1>Tag</h1> <?php endif ?>
- テーマユニットテスト
-日本語版テストデータリポジトリから wordpress-theme-test-date-ja.xml をダウンロード。
管理画面のツール>インポート>WordPress>今すぐインストール>インポーターの実行>ダウンロードした XML ファイルを選択しインポート>実行。
新しい記事がたくさん増えているので、ページの遷移などを確認できる。
https://wpdocs.osdn.jp/%E3%83%86%E3%83%BC%E3%83%9E%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%83%86%E3%82%B9%E3%83%88 - ページネーション
- メニューの編集
-プラグイン「Admin Bar Position」で管理バーを画面下に持ってくる。
function.phpファイルに以下を記入し、管理画面に「メニュー」を表示させる。https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_get_nav_menu_items - エスケープ
https://www.webdesignleaves.com/pr/wp/wp_escape_functions.html -
-
- テーマの変更方法
SLスタジオで学習して補充した知識
オンラインスクールではWordpress以外でのPHPの知識を学べなかったので、無料のプログラミング講座SLスタジオで知識の補充を図りました。
- データ型を確認する:var_dump();
出力結果
$str = "Hello"; $num = 1; $d = 0.123; $flg = true; var_dump($str,$num,$d,$flg);
bool型はechoでは値の確認ができないため、var_dumpで確認する。関数の情報はシステム利用者には必要ないため、var_dumpはデバックで使用する関数。string(5) "Hello" int(1) double(0.123) bool(true)
- for文
条件を指定し、条件がtrueである限り処理を繰り返す。for ([ループカウンター変数の初期化]; [条件]; [変数再代入]) { 繰り返したい処理 }
ループ内で繰り返しを制御するために利用される変数をループカウンタ変数という。一般的に変数名を"\$i"として初期値に"0"を代入。 ループを終えるために条件の部分が最終的に"false"となるよう、"\$i"に値を再代入しなくてはならない。そうしないと、無限ループになる。
例えば、"\$i++"とインクリメントすることにより、ループのたびに"\$i"は1ずつ増え、ループを抜ける。
また、0から数えられる配列と相性がよく、配列の中身を順に出力するのにも利用できる。<?php $array = [1,2,3,4,5]; for ($i = 0; $i < count($array); $i++) { echo $array[$i]; }
- while文
基本はfor文で書いた方がミスが少ないが、整数以外の値を条件とする場合や、繰り返す回数が決まっていない時にはwhile文が利用しやすい。<?php $number = 1; (← 例。変数はwhile文の外で定義する) while (条件) { 繰り返したい処理 (インクリメントなどはこの中に書く) }
- do-while文
while文と違って、まず処理を一度実行してから、条件の判定をする。そのため、条件に一致しなくても最低一度は実行される。<?php $number = 5; do { (← 無条件でまず実行) echo $number . " "; $number++; } while ($number < 5); (← その後でループするか判定)
- foreach文
PHP独自の構文。添字が0から順番に添えられていないような配列や連想配列にも対応し、要素を順に取り出してくれる。全部取り出したら自動的にループが終わる。<?php foreach ([$arr(配列の変数)]) as [$key(添字)] => [$value(値)] { 繰り返したい処理 例)echo $key, ":", $value; }
- ファイルの呼び出し:require "(ファイル名)" 、あるいはinclude "(ファイル名)";
違いの整理。
require:ファイルが見つからない場合、エラーとなり処理が中断される。
include:ファイルが見つからない場合、警告を発するが処理は続行される。 上記2つに加え、require_once、include_onceがある。
once有り:ファイルが既に読み込まれている場合、そのファイルを読み込まない。 once無し:ファイルが既に読み込まれていても、ファイルの読み込みを行う。 - 関数
処理をひとまとめにして事前に定義し、好きなタイミングで実行できる仕組み。
関数名は任意に設定できるが、他の関数名と被らないように注意(エラーになる)。
可読性を考えて、上部や下部に関数の宣言をまとめて書く場合が多い。なお、実行の記述が宣言より前に書かれていても問題なく実行される。
PHPで予め用意されているビルトイン関数というものもある。これまでに使っていた"var_damp();"など。- 引数
定義した関数を使用するにあたって、必要になる値を変数で仮置きしておく(仮引数)。使用する時に順番にその値を渡す(実引数)。
仮引数にデフォルト値を入れておいて($変数 = 値,)、何も渡さずにその値を使用したり、引数を渡してその値を上書きして使ったりすることもできる。例)四角形の面積を算出する関数function 関数名 (仮引数1, 仮引数2...) { 処理 } 関数名 (実引数1, 実引数2...);
function menseki ($tate, $yoko) { $menseki = $tate * $yoko echo $menseki } menseki(5, 10); //出力結果 50
- return文(戻り値)
return 値;で、呼び出し元に戻ると同時に値を返す(それ移行の処理は実行されない)。funcrion shikaku(&tate, $yoko) { $menseki = $tate * $yoko; if($menseki >= 100) { return "100以上"; } return "100未満"; } echo shikaku(15,10); echo "\n"; echo shikaku(5,5); // 出力結果 // 100以上 // 100未満
- ビルトイン関数
- 文字列操作
- Math関数
- 日時関数
- 現在日時の取得:date();
date(Y-m-d H:i:s); //2023-03-31 15:05:22 ※間の"-"や":"を指定できる date(y年m月d日 H時i分s秒); //2023年03月06日 15時05分22秒 date(y-M-j h:i:s D); //23-March-6 03:05:22 Fri ※y→西暦の下二桁,M→英語の月,j→十の位の0を省いた日付,h→12時間表記の時間,D→英語の曜日上3文字
- 時間の取得:time();
UNIXタイムスタンプを返す。
UNIXタイムスタンプとは、世界標準時基準で1970年1月1日 00:00:00(日本時間 09:00:00)から現在の時刻までを秒数換算したもの。
- 現在日時の取得:date();
- 配列関数
- 整数の要素を配列として返す:range()
range(int $start, int $end, int $step = 1) //$start から $end までの整数。 //$step を指定すると、増加量を変更することができる。
- 要素の数を返す:count()
- 配列の範囲を指定して、配列として返す:array_slice()
- 整数の要素を配列として返す:range()
-
- 文字列操作
- 引数