SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
WordPress初心者が
基本アーキテクチャを
ざっくりと学ぶ
参:エンジニアのためのWordPress開発入門
自己紹介!
WP歴
ざっと本一冊目
勉強会5回
10時間くらい
運用経験:なし
所属 職業
WEBプログラマー
エンジニアのためのWordPress開発入門
書店にあったなかでは、一番詳しそうかな…
WordPress って何?
コンテンツ管理システム(CMS)
HTMLやCSSを知らなくても、Webサイトを構築できる
ようになるツールのこと。
ブログもその一種
WordPress以外のCMS
Movable Type XOOPScocrete5
EC-CUBE Moodle MobileApps
基本的な機能
管理画面から記事を投稿して、公開できる。
・投稿ページ
・固定ページ
カスタマイズしたい時には
見た目をカスタマイズ…テーマ
機能をカスタマイズ…プラグイン
テーマとプラグイン
管理画面からインストールして使うことができる
自作するには?
物足りない
カスタマイズするからには
WPの仕組みを知りたい
ファイル構成
/index.php アクセスのエントリポイント
/wp-config.php 設定ファイル
/wp-admin/ 管理画面用のファイル群
/wp-content/ サイトのデータを格納
┗/language/ 言語ファイル
┗/themes/ テーマ
┗/plugins/ プラグイン
┗/uploads/ アップロードファイル
/wp-includes/ コアファイル
テーマを作ってみよう!
/wp-content/themes/
・style.css
・index.php
/*
Theme Name: booklog
Author: ClimbFrog
Author URI: https://wordpress.org/
Description: Sample Theme
Version: 1.0
License: GNU General Public License v2 or
later
License URI:
http://www.gnu.org/licenses/gpl-2.0.html
*/
できた!!!
データ構成
DB構造
・12個のテーブル
wp_posts 投稿記事、ページ、ナビゲーションなど
wp_postmeta 各投稿記事特有の情報(カスタムフィールド)
wp_terms 投稿およびリンクの分類(カテゴリ・タグ)に使われる語句
wp_term_taxonomy 投稿およびリンクの分類上の語句(カテゴリ・タグ)データ
wp_term_relationships オブジェクトと↑のカテゴリ・タグとの関連付け情報
wp_user 登録ユーザ
wp_usermeta 各ユーザ特有のユーザ・メタデータを格納
wp_comment コメント・トラックバック・ピンバックデータ
wp_commentmeta コメントのメタデータ
wp_options 管理>設定で設定された情報
wp_links リンク作成で作成されたリンク情報
wp_postsテーブルをみてみよう
作
っ
て
み
た
index.phpを編集してみた
<?php get_header(); ?>
<?php get_footer(); ?>
get_header()って何?
WordPress Codex
WordPressの公式オンラインマニュアル
 https://wpdocs.osdn.jp/関数リファレンス/get_header
 現在のテーマディレクトリの header.php テンプレートファイルを読み
込みます。
 その他のテンプレートタグ例
bloginfo()
get_sidebar()
  wp_register()
header.phpを編集してみた
 <!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="<?php bloginfo ('stylesheet_url'); ?>"
type="text/css" />
</head>
<body>
<header>
<img src="<?php header_image(); ?>" alt="<?php bloginfo('name');?>">
<span><?php bloginfo('name'); ?><span>
</header>
functions.phpを編集してみた
 WordPressのデフォルト機能の動作を変更する
 
// カスタムヘッダー
$args = array(
'width' => 980,
'height' => 60
'default-image' => get_template_directory_uri() .  
'/images/header.jpg',
 'uploads' => true,
);
add_theme_support( 'custom-header', $args); 
 
著者への想いもぶつけたい!!!
そんなマルコスが出会った
のが
カスタム投稿タイプ
・投稿ページ
・固定ページ
以外のページを作れます
やり方は簡単!
register_post_type($post_t
ype, $options);
関数を使って投稿タイプを追加するだ
け!
どうせなら著者にタグ付けしたいな
そんなマルコスが出会ったの
がタクソノミー
カスタム投稿タイプに分類を設定できま
す。
やり方は簡単!
register_taxonomy('autho
r_category', 'author',
$args_tax);
関数を使ってタクソノミーを追加するだけ
wp_termsテーブルをみてみよう
wp_term_taxonomyテーブルをみてみよう
タイトルと本文以外も入力したいな
そんなマルコスが出会った
のが カスタムフィールド
我儘いうな
カスタムフィールドのデータ追加
update_post_meta(74, ‘birthplace,’長野県’);
カスタムフィールドのデータ取得
$birthplace = get_post_meta(74, ‘birthplace,true);
が、管理画面の投稿ページで入力させるUIを作るのは面倒な作業が必要
プラグイン:Advanced Custom Fields などを使う
1.基本的な処理の流れ
URLルーティング
メインクエリ
URLルーティング
リクエスト解析
MVC WordPress
コントローラー
モデル
ビュー テンプレート
フック
フック
WordPress処理フローの途中のポイントに
割り込んで、独自の処理を追加すること
 アクション
処理を追加する
  add_action($tag, $function, $priority, $args);
 フィルター
  データや処理を変更する
add_filter($tag, $function, $priority, $args);
 実際は曖昧なところがあり、厳密に考えなくていい
フックを使ってみた
function check_post_date($content){
global $post;
$past_days = floor((time() - strtotime($post->post_date)) / 86400);
if($past_days >= 2){
$str = '<p class="message">投稿日から' . $past_days . '日以上が経過し
ています。</p>';
}
return $str . $content;
}
add_filter('the_content', 'check_post_date');
WordPress Codex
WordPressの公式オンラインマニュアル
 https://wpdocs.osdn.jp/プラグイン_API 
 
 プラグインAPI
WordPressの規定の処理を追加、変更するためのAPI
  フックなどで使用できる
メインクエリ
 URLリクエストが解析されて記事を取得するクエリが
 自動的に発行される。
 取得された情報はグローバル変数$wp_queryに格納される。
 
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php the_time('Y年m月d日'); ?>
<?php endwhile; else : ?>
//記事がない場合に表示
<?php endif; ?>
メインループ
テンプレート階層
トップページ home.php index.php
投稿ページ single-{post_type}.php single.php
固定ページ page-スラッ
グ.php
page-ID.php page.php
カテゴリー category-ID.php category.php archive.php
タクソノミー taxonomy-{taxonom
y}-{term}.php
taxonomy-{taxonom
y}.php
404 404.php
検索結果 search.php
プラグインの基本的な作り方
~略~
ご健闘をお祈りします

Contenu connexe

Tendances

DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)Akihiro Kuwano
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話Yusuke Hisatsu
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則bonjin6770 Kurosawa
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれNakanoYosuke1
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8Koichiro Matsuoka
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
FastAPIを使って 機械学習モデルをapi化してみた
FastAPIを使って 機械学習モデルをapi化してみたFastAPIを使って 機械学習モデルをapi化してみた
FastAPIを使って 機械学習モデルをapi化してみたSho Tanaka
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
BLEACH -Brave Souls- 3DUI演出の実装事例
BLEACH -Brave Souls- 3DUI演出の実装事例BLEACH -Brave Souls- 3DUI演出の実装事例
BLEACH -Brave Souls- 3DUI演出の実装事例KLab Inc. / Tech
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦いYuto Komai
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメSatoshi Takami
 
今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug
今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug
今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug満徳 関
 

Tendances (20)

DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
Slideshare Japanese
Slideshare JapaneseSlideshare Japanese
Slideshare Japanese
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
FastAPIを使って 機械学習モデルをapi化してみた
FastAPIを使って 機械学習モデルをapi化してみたFastAPIを使って 機械学習モデルをapi化してみた
FastAPIを使って 機械学習モデルをapi化してみた
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
UX / UIデザインって何?
UX / UIデザインって何?UX / UIデザインって何?
UX / UIデザインって何?
 
BLEACH -Brave Souls- 3DUI演出の実装事例
BLEACH -Brave Souls- 3DUI演出の実装事例BLEACH -Brave Souls- 3DUI演出の実装事例
BLEACH -Brave Souls- 3DUI演出の実装事例
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
 
今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug
今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug
今さら聞けないプロダクトオーナー アンチパターン入門 - XP祭り2015 #xpjug
 

Similaire à Word press初心者が 基本アーキテクチャを ざっくりと学ぶ

WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)Takashi Uemura
 
簡単・多機能・スタイリッシュなビジネステンプレート
簡単・多機能・スタイリッシュなビジネステンプレート簡単・多機能・スタイリッシュなビジネステンプレート
簡単・多機能・スタイリッシュなビジネステンプレートHidekazu Ishikawa
 
ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~
ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~
ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~Unicast Inc.
 
第一回スライド
第一回スライド第一回スライド
第一回スライド洋介 池田
 
WordPressってブログじゃないの?
WordPressってブログじゃないの?WordPressってブログじゃないの?
WordPressってブログじゃないの?tokumotonahoko
 
WordPress ユーザーのための a-blog cms 入門
WordPress ユーザーのための a-blog cms 入門WordPress ユーザーのための a-blog cms 入門
WordPress ユーザーのための a-blog cms 入門Akiko Kasaya
 
PHPがわからないデザイナーでもできる、簡単カスタマイズ術
PHPがわからないデザイナーでもできる、簡単カスタマイズ術PHPがわからないデザイナーでもできる、簡単カスタマイズ術
PHPがわからないデザイナーでもできる、簡単カスタマイズ術Eri Sawada
 
コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!FLOW web planning & design
 
カスタムフィールドで作るカンタン投稿システム
カスタムフィールドで作るカンタン投稿システムカスタムフィールドで作るカンタン投稿システム
カスタムフィールドで作るカンタン投稿システムSaori Yamada
 
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川Tomoya Hokari
 
Webデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ー
Webデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ーWebデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ー
Webデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ーKite Koga
 
あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?Ryuji Egashira
 
WordPress.comを使って個人ブログを作ってみよう!
WordPress.comを使って個人ブログを作ってみよう!WordPress.comを使って個人ブログを作ってみよう!
WordPress.comを使って個人ブログを作ってみよう!anzu matsui
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121Shohei Aoyama
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121Shohei Aoyama
 
WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介Takashi Uemura
 
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズCSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズrie05
 

Similaire à Word press初心者が 基本アーキテクチャを ざっくりと学ぶ (20)

WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
 
簡単・多機能・スタイリッシュなビジネステンプレート
簡単・多機能・スタイリッシュなビジネステンプレート簡単・多機能・スタイリッシュなビジネステンプレート
簡単・多機能・スタイリッシュなビジネステンプレート
 
ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~
ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~
ユニキャストワークショップ2013 はじめてのWebプログラミング#1 ~WordPressからはじめよう~
 
第一回スライド
第一回スライド第一回スライド
第一回スライド
 
WordPressってブログじゃないの?
WordPressってブログじゃないの?WordPressってブログじゃないの?
WordPressってブログじゃないの?
 
WordPress ユーザーのための a-blog cms 入門
WordPress ユーザーのための a-blog cms 入門WordPress ユーザーのための a-blog cms 入門
WordPress ユーザーのための a-blog cms 入門
 
PHPがわからないデザイナーでもできる、簡単カスタマイズ術
PHPがわからないデザイナーでもできる、簡単カスタマイズ術PHPがわからないデザイナーでもできる、簡単カスタマイズ術
PHPがわからないデザイナーでもできる、簡単カスタマイズ術
 
Wp hands-on
Wp hands-onWp hands-on
Wp hands-on
 
WordPress
WordPressWordPress
WordPress
 
コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!コードをさわらずにビジネスサイトを作ろう!
コードをさわらずにビジネスサイトを作ろう!
 
カスタムフィールドで作るカンタン投稿システム
カスタムフィールドで作るカンタン投稿システムカスタムフィールドで作るカンタン投稿システム
カスタムフィールドで作るカンタン投稿システム
 
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川
20191204_WordPressの教科書出版記念イベント_パフォーマンスチューニングとセキュリティ_小川
 
Webデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ー
Webデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ーWebデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ー
Webデザイナーが身に付けておきたい定番スキル ー WordPress 初級・導入編 ー
 
あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?あらためて baserCMS ってなんだろう?
あらためて baserCMS ってなんだろう?
 
180315 ppug
180315 ppug180315 ppug
180315 ppug
 
WordPress.comを使って個人ブログを作ってみよう!
WordPress.comを使って個人ブログを作ってみよう!WordPress.comを使って個人ブログを作ってみよう!
WordPress.comを使って個人ブログを作ってみよう!
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121
 
WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介WordPressテーマ Foundation for WordPress の紹介
WordPressテーマ Foundation for WordPress の紹介
 
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズCSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
 

Word press初心者が 基本アーキテクチャを ざっくりと学ぶ