SlideShare a Scribd company logo
©	
  wordbonch.org	
WordPress  Widget  API
WordBench宮崎
ver.1.0.0	
 【WordBench宮崎勉強会】
©	
  wordbonch.org	
⾃自⼰己紹介
2	
  
⾼高⾒見見  和也(Takami Kazuya)
Twi5er@miiitaka
Facebook@miiitaka
株式会社アラタナ
フロントエンドエンジニア
JavaScriptと友達です。
©	
  wordbonch.org	
Let’s Programming !!
3	
  
今回は野良良プラグインを作って
実装してみます。
©	
  wordbonch.org	
WordPressの基本階層は以下のとおりです。⼤大きく3つのフォルダがあります。
WordPressの基本構造を理理解(主要ディレクトリ)
4	
  
/wp-admin/
管理理画⾯面で使⽤用するファイルあれこれがある。基本触らない。
/wp-content/
基本、このフォルダの中をさわりましょう。
/wp-include/
WP全体で使⽤用するJSやCSS、コアファイルがある。これも基本触らない。
/
ルート直下は、ログイン関連やRSS関連、コメント、トラックバック、メール送受信⽤用
のファイルなどなど
©	
  wordbonch.org	
wp-‐‑‒contentフォルダのさらに中のお話。
WordPressの基本構造を理理解(wp-‐‑‒contentフォルダ)
5	
  
/wp-content/
/wp-content/language/
⾔言語パック
/wp-content/plugin/
インストールしたプラグインが保存されている場所
/wp-content/themes/
各種テーマのテンプレートが保存されている場所
/wp-content/upgrade/
バージョンアップ時に使⽤用。
/wp-content/upload/
管理理画⾯面からアップロードしたメディアファイルが保存されている場所。
年年→⽉月でいい感じに保存されています。
©	
  wordbonch.org	
今回は/wp-‐‑‒content/plugin/にフォルダを作成してプラグインを作ります。
WordPressの基本構造を理理解(今回の主役)
6	
  
/wp-content/
/wp-content/language/
⾔言語パック
/wp-content/plugin/
インストールしたプラグインが保存されている場所
/wp-content/themes/
各種テーマのテンプレートが保存されている場所
/wp-content/upgrade/
バージョンアップ時に使⽤用。
/wp-content/upload/
管理理画⾯面からアップロードしたメディアファイルが保存されている場所。
年年→⽉月でいい感じに保存されています。
widget-plugin
ディレクトリを作る。
©	
  wordbonch.org	
作成したディレクトリ内にディレクトリと同じ名前のPHPファイル(widget-‐‑‒plugin.php)を
作成して以下のコメントを書きます。
widget-‐‑‒plugin.phpに記述
7	
  
<?php	
  
/*	
  
Plugin	
  Name:	
  Widget	
  API	
  PLUGIN	
  
DescripMon:	
  This	
  is	
  a	
  study	
  plugin	
  
Author:	
  Kazuya	
  Takami	
  
Version:	
  0.1	
  
*/	
  
書いたら管理理画⾯面のプラグインメニューを確認しましょう。(^o^)
©	
  wordbonch.org	
何はともあれテーマを作る(外観→テーマ)
8	
  
でた!\(^o^)/
©	
  wordbonch.org	
先程のコメント欄の下に続けて以下のコードを記述します。
Widget  APIの基本
9	
  
class	
  Widget_Plugin	
  extends	
  WP_Widget	
  {	
  
	
  	
  	
  	
  public	
  funcMon	
  __construct()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  parent::__construct(	
  false,	
  'Widget	
  Plugin	
  Demo’	
  );	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  form(	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  update(	
  $new_instance,	
  $old_instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
}	
  
©	
  wordbonch.org	
先程のコメント欄の下に続けて以下のコードを記述します。
Widget  APIの基本
10	
  
class	
  Widget_Plugin	
  extends	
  WP_Widget	
  {	
  
	
  	
  	
  	
  public	
  funcMon	
  __construct()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  parent::__construct(	
  false,	
  'Widget	
  Plugin	
  Demo’	
  );	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  form(	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  update(	
  $new_instance,	
  $old_instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
}	
  
WP_Widgetクラスを継承
©	
  wordbonch.org	
先程のコメント欄の下に続けて以下のコードを記述します。
Widget  APIの基本
11	
  
class	
  Widget_Plugin	
  extends	
  WP_Widget	
  {	
  
	
  	
  	
  	
  public	
  funcMon	
  __construct()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  parent::__construct(	
  false,	
  ‘Widget	
  Plugin	
  Demo’	
  );	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  form(	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  update(	
  $new_instance,	
  $old_instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
}	
  
WP_Widgetクラス(スーパ
ークラス)のコンストラク
タ呼び出し
©	
  wordbonch.org	
先程のコメント欄の下に続けて以下のコードを記述します。
Widget  APIの基本
12	
  
class	
  Widget_Plugin	
  extends	
  WP_Widget	
  {	
  
	
  	
  	
  	
  public	
  funcMon	
  __construct()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  parent::__construct(	
  false,	
  'Widget	
  Plugin	
  Demo’	
  );	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  form(	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  update(	
  $new_instance,	
  $old_instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
}	
  
管理理画⾯面のウィジェットに
⼊入⼒力力項⽬目などを表⽰示する関数
$instance に連想配列列で
登録した項⽬目値が来る
©	
  wordbonch.org	
先程のコメント欄の下に続けて以下のコードを記述します。
Widget  APIの基本
13	
  
class	
  Widget_Plugin	
  extends	
  WP_Widget	
  {	
  
	
  	
  	
  	
  public	
  funcMon	
  __construct()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  parent::__construct(	
  false,	
  'Widget	
  Plugin	
  Demo’	
  );	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  form(	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  update(	
  $new_instance,	
  $old_instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
}	
  
管理理画⾯面のウィジェット
で「保存」ボタンを押した
時に動作する関数
$new_instance が今回、
$old_instanceが前回⼊入
⼒力力した値
©	
  wordbonch.org	
先程のコメント欄の下に続けて以下のコードを記述します。
Widget  APIの基本
14	
  
class	
  Widget_Plugin	
  extends	
  WP_Widget	
  {	
  
	
  	
  	
  	
  public	
  funcMon	
  __construct()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  parent::__construct(	
  false,	
  'Widget	
  Plugin	
  Demo’	
  );	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  form(	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  update(	
  $new_instance,	
  $old_instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  
	
  	
  	
  	
  }	
  
}	
  
サイト側のウィジェットを
配置した場所に表⽰示される
内容を記述
$new_instance が今回、
$old_instanceが前回⼊入
⼒力力した値
©	
  wordbonch.org	
出来上がったクラスをウィジェットに登録して、フックポイント(widget_̲init)に仕掛けます。
Widget  API:フックポイントの登録
15	
  
add_acMon(	
  'widgets_init',	
  funcMon	
  ()	
  {	
  
	
  	
  	
  	
  register_widget(	
  'Widget_Plugin’	
  );	
  
});	
  
クラス名を登録します。
(無名関数パターン)
funcMon	
  register_widget_plugin	
  ()	
  {	
  
	
  	
  	
  	
  register_widget(	
  'Widget_Plugin’	
  );	
  
}	
  
add_acMon(	
  'widgets_init’,	
  ‘register_widget_plugin’);	
  
関数を作ってフックさ
せるパターン。
©	
  wordbonch.org	
さて
16	
  
ここまで記述したらプラグインを
有効にしてみましょう。
©	
  wordbonch.org	
Widget  API:ウィジェット画⾯面
17	
  
追加された!\(^o^)/
©	
  wordbonch.org	
Widget  API:ウィジェット画⾯面
18	
  
けどまだ何も起きない
(´・ω・`)
©	
  wordbonch.org	
まずは初期設定
19	
  
コンストラクタの定義
©	
  wordbonch.org	
スーパークラスのコンストラクタを呼び出します。
Widget  API:コンストラクタの定義
20	
  
public	
  funcMon	
  __construct()	
  {	
  
	
  	
  	
  	
  $widget_opMons	
  =	
  array(	
  'descripMon'	
  =>	
  'This	
  is	
  a	
  study	
  plugin'	
  );	
  
	
      parent::__construct(	
  false,	
  'Widget	
  Plugin	
  Demo',	
  $widget_opMons);	
  
}	
  
©	
  wordbonch.org	
formメソッド
21	
  
formメソッドの定義
©	
  wordbonch.org	
Widget  API:formメソッド定義
22	
  
public	
  funcMon	
  form(	
  $instance	
  )	
  {	
  
	
  	
  	
  	
  echo	
  '<p>タイトル:';	
  
	
  	
  	
  	
  prina(	
  
	
  	
  	
  	
  	
  	
  	
  	
  '<input	
  type="text"	
  id="%s"	
  name="%s"	
  value="%s">',	
  
	
  	
  	
  	
  	
  	
  	
  	
  $this-­‐>get_field_id(	
  'Mtle'	
  ),	
  
	
  	
  	
  	
  	
  	
  	
  	
  $this-­‐>get_field_name(	
  'Mtle'	
  ),	
  
	
  	
  	
  	
  	
  	
  	
  	
  esc_a5r(	
  $instance['Mtle']	
  )	
  
	
  	
  	
  	
  );	
  
	
  	
  	
  	
  echo	
  '</p>';	
  
}	
  
public	
  funcMon	
  get_field_id(	
  $field_name	
  )	
  {	
  
	
  	
  	
  	
  return	
  'widget-­‐'	
  .	
  $this-­‐>id_base	
  .	
  '-­‐'	
  .	
  $this-­‐>number	
  .	
  '-­‐'	
  .	
  $field_name;	
  
}	
  
widget.php
⼀一意な⽂文字列列を作成し
てくれる。
public	
  funcMon	
  get_field_name($field_name)	
  {	
  
	
  	
  	
  	
  return	
  'widget-­‐'	
  .	
  $this-­‐>id_base	
  .	
  '['	
  .	
  $this-­‐>number	
  .	
  ']['	
  .	
  $field_name	
  .	
  ']';	
  
}	
  
name属性は配列列にし
てくれる。すてき。
©	
  wordbonch.org	
Widget  API:ウィジェット画⾯面確認
23	
  
⼊入⼒力力ボックスが出た!
( ´ ▽ ` )ノ
©	
  wordbonch.org	
Widget  API:ウィジェット画⾯面確認
24	
  
けどまだ保存できない
(´・ω・`)
©	
  wordbonch.org	
updateメソッド
25	
  
updateメソッドの定義
©	
  wordbonch.org	
$new_̲instance  に⼊入⼒力力した値が⼊入っているのでreturnするだけ。
Widget  API:updateメソッド定義
26	
  
public	
  funcMon	
  update(	
  $new_instance,	
  $old_instance	
  )	
  {	
  
	
  	
  	
  	
  return	
  $new_instance;	
  
}	
  
これだけ!( ´ ▽ ` )ノ
⼊入⼒力力した値+何かを保存したい場合には、ここで仕掛けてあげます。
$new_̲instance[ʻ‘titleʼ’]  =  $new_̲instance[ʻ‘titleʼ’]  .  ʻ‘追加ʼ’;  的な。
©	
  wordbonch.org	
widgetメソッド
27	
  
widgetメソッドの定義
©	
  wordbonch.org	
タイトルとコンテンツを出⼒力力するにあたって、他のwidgetと同様の構成にするようにします。
Widget  API:widgetメソッド定義
28	
  
public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  	
  	
  	
  echo	
  $args['before_widget'];	
  
	
  	
  	
  	
  echo	
  $args['before_Mtle'];	
  
	
  	
  	
  	
  echo	
  esc_html(	
  $instance['Mtle']	
  );	
  
	
  	
  	
  	
  echo	
  $args['aher_Mtle'];	
  
	
  	
  	
  	
  echo	
  $args['aher_widget'];	
  
}	
  
登録した情報を出⼒力力し
ます。エスケープも忘
れずに。
©	
  wordbonch.org	
Widget  API:表⽰示確認
29	
  
表⽰示された!( ´ ▽ ` )ノ
©	
  wordbonch.org	
タイトルとコンテンツを出⼒力力するにあたって、他のwidgetと同様の構成にするようにします。
Widget  API:widgetメソッド定義
30	
  
public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  	
  	
  	
  echo	
  $args['before_widget'];	
  
	
  	
  	
  	
  echo	
  $args['before_Mtle'];	
  
	
  	
  	
  	
  echo	
  esc_html(	
  $instance['Mtle']	
  );	
  
	
  	
  	
  	
  echo	
  $args['aher_Mtle'];	
  
	
  	
  	
  	
  echo	
  $args['aher_widget'];	
  
}	
  
引数$argsにウィジェット共
通情報が含まれています。
©	
  wordbonch.org	
Widget  API:widgetメソッド定義
31	
  
public	
  funcMon	
  widget(	
  $args,	
  $instance	
  )	
  {	
  
	
  	
  	
  	
  echo	
  $args['before_widget'];	
  
	
  	
  	
  	
  echo	
  $args['before_Mtle'];	
  
	
  	
  	
  	
  echo	
  esc_html(	
  $instance['Mtle']	
  );	
  
	
  	
  	
  	
  echo	
  $args['aher_Mtle'];	
  
	
  
	
  	
  	
  	
  global	
  $post;	
  
	
  	
  	
  	
  $where	
  =	
  array(	
  'numberposts'	
  =>	
  5	
  );	
  
	
  	
  	
  	
  $posts	
  =	
  get_posts(	
  $where	
  );	
  
	
  	
  	
  	
  foreach(	
  $posts	
  as	
  $post	
  )	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  setup_postdata($post);	
  
	
  	
  	
  	
  	
  	
  	
  	
  esc_html(	
  the_Mtle()	
  );	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  wp_reset_postdata();	
  
	
  	
  	
  	
  echo	
  $args['aher_widget'];	
  
}	
  
この部分を追加しました。
投稿を表⽰示してみます。
©	
  wordbonch.org	
Widget  API:表⽰示確認
32	
  
表⽰示された!( ´ ▽ ` )ノ
©	
  wordbonch.org	
ご清聴ありがとうございました。
33	
  
ありがとうございました。
次回は2ヶ月後の8月開催です。
©	
  wordbonch.org	
WordPress関数リファレンス/Widgets_API
https://codex.wordpress.org/Widgets_API
WordPress関数リファレンス/register_widget
https://codex.wordpress.org/Function_Reference/register_widget
参考URL
34	
  

More Related Content

PDF
Vue入門
PDF
Try Jetpack
PDF
20120118 titanium
PDF
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
PDF
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
PDF
JavaFX 2.0 - リッチクライアントのためのUI基盤
PDF
プロダクトに 1 から Vue.js を導入した話
PDF
はじめてのVue.js
Vue入門
Try Jetpack
20120118 titanium
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
JavaFX 2.0 - リッチクライアントのためのUI基盤
プロダクトに 1 から Vue.js を導入した話
はじめてのVue.js

What's hot (20)

PPT
Ruby on Rails Tutorial Chapter8-10
PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
PDF
Scene BuilderでFXML
PDF
Unit testing JavaScript with JUnit/JavaFX
PDF
Apexデザインパターン
PPTX
Magento meet up Tokyo#1 for Design
PPTX
T90 きっと怖くないmvvm & mvpvm
PPT
WordPress×jQueryMobile
PDF
何が変わった JavaFX 2.0
PPTX
Mvpvm pattern
PDF
大阪Node学園八時限目 「expressで作るWebアプリ」
PDF
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
PDF
concrete5デザインカスタマイズに必要なPHPの知識
PDF
Form libraries
PDF
Knocked out in knockout js
PDF
Vue.js 基礎 + Vue CLI の使い方
PDF
I Log On Saa S
PDF
Vue Router + Vuex
PDF
PHP勉強会 #51
PPTX
20200304 vuejs
Ruby on Rails Tutorial Chapter8-10
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Scene BuilderでFXML
Unit testing JavaScript with JUnit/JavaFX
Apexデザインパターン
Magento meet up Tokyo#1 for Design
T90 きっと怖くないmvvm & mvpvm
WordPress×jQueryMobile
何が変わった JavaFX 2.0
Mvpvm pattern
大阪Node学園八時限目 「expressで作るWebアプリ」
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
concrete5デザインカスタマイズに必要なPHPの知識
Form libraries
Knocked out in knockout js
Vue.js 基礎 + Vue CLI の使い方
I Log On Saa S
Vue Router + Vuex
PHP勉強会 #51
20200304 vuejs
Ad

Similar to WordPress widget api (20)

PDF
Wp プラグインapiから理解するword press.share
PDF
はじめてのWord pressプラグイン勉強会
PDF
WordPressの使えるプラグイン2013
PDF
WordPressプラグインの作り方
PDF
WordPressプラグイン考察
PPT
Word Press on Movable Type
PDF
4時間まったりWordPressテーマ作成講座
KEY
WordPress中級者への道!テンプレートタグはどう動くのか!?
PDF
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
PDF
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
PDF
意外と簡単 プラグイン開発超入門
PDF
SaCSS vol.24
PDF
SaCSS vol. 24
PPTX
案件で使えるプラグイン特集
PPTX
WordBench熊本第3回勉強会
PDF
Mizuno buddypress-plugin
PDF
Mizuno buddypress-plugin
PDF
ノンプログラマーのためのWordPressプラグイン作成超入門 | Mignon Style
PDF
落とし穴に落ちないためのWordPress基礎知識
Wp プラグインapiから理解するword press.share
はじめてのWord pressプラグイン勉強会
WordPressの使えるプラグイン2013
WordPressプラグインの作り方
WordPressプラグイン考察
Word Press on Movable Type
4時間まったりWordPressテーマ作成講座
WordPress中級者への道!テンプレートタグはどう動くのか!?
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
意外と簡単 プラグイン開発超入門
SaCSS vol.24
SaCSS vol. 24
案件で使えるプラグイン特集
WordBench熊本第3回勉強会
Mizuno buddypress-plugin
Mizuno buddypress-plugin
ノンプログラマーのためのWordPressプラグイン作成超入門 | Mignon Style
落とし穴に落ちないためのWordPress基礎知識
Ad

More from Takami Kazuya (20)

PDF
HTML栄枯盛衰は世の習い
PDF
Google Apps Script 入門
PDF
GoogleAppsScript入門
PDF
Googleデータポータルで見える化に挑戦vol.2
PDF
WordPressで考えるこれからのコンテンツ制作
PDF
WordPressをこれから始める人のためのテーマ講座
PDF
WordPress+AMP
PDF
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016
PDF
WordPress + JSON-LDで構造化するこれからのマークアップ
PDF
jQuery3.0-beta1-point
PDF
プラグイン公開までの道のり
PDF
History api
PDF
JSON-LD schema.org定義によるデータ構造化のススメ
PDF
Miyazaki.js vol.2
PDF
React Facebook JavaScript Library
PDF
Wordpress カスタム投稿
PDF
【WordBench宮崎】第3回・4回アンケート報告
PDF
WordPressテーマ作成
PPTX
EC-CUBEプラグイン制作のポイント
PPT
今から学ぶ!jQuery Mobile!
HTML栄枯盛衰は世の習い
Google Apps Script 入門
GoogleAppsScript入門
Googleデータポータルで見える化に挑戦vol.2
WordPressで考えるこれからのコンテンツ制作
WordPressをこれから始める人のためのテーマ講座
WordPress+AMP
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016
WordPress + JSON-LDで構造化するこれからのマークアップ
jQuery3.0-beta1-point
プラグイン公開までの道のり
History api
JSON-LD schema.org定義によるデータ構造化のススメ
Miyazaki.js vol.2
React Facebook JavaScript Library
Wordpress カスタム投稿
【WordBench宮崎】第3回・4回アンケート報告
WordPressテーマ作成
EC-CUBEプラグイン制作のポイント
今から学ぶ!jQuery Mobile!

WordPress widget api