WordPress プラグイン開発の MVC フレームワーク WP MVC を使って
DBの拡張や管理画面/管理メニューの作成などを作成してみた。
今回は、WP MVC を使ったプラグインの開発方法について公式サイトのチュートリアルを試してみた。
WP MVC の情報
MP MVC プラグインのインストール
WordPress にログインして WP MVCプラグインをインストール/有効化する。
プラグインを作成する準備
コード生成ツールに実行権限を追加する。
[bash gutter=”false”]
$ cd path/to/plugins/wp-mvc
$ chmod +x wpmvc
[/bash]
プラグインのベースを作成する
プラグイン(VenueListing)のベースを作成する。
[bash gutter=”false”]
$ ./wpmvc generate plugin VenueListing
[/bash]
以下の場所にプラグインのベースになるファイルが生成される。
path/to/plugins/venue-listing
DBのテーブルを作成する
プラグインの有効化時に必要なDBテーブル(venues)を作成するためのコードを追加する。
[bash gutter=”false”]
$ cd path/to/plugins/venue-listing
[/bash]
venue-listing_loader.php の編集する。
line 21 – 22 あたり
[php]
// Use dbDelta() to create the tables for the app here
global $wpdb;
$sql = ‘
CREATE TABLE ‘.$wpdb->prefix.’venues (
id int(11) NOT NULL auto_increment,
name varchar(255) NOT NULL,
url varchar(255) default NULL,
description text,
address1 varchar(255) default NULL,
address2 varchar(255) default NULL,
city varchar(100) default NULL,
state varchar(5) default NULL,
zip varchar(20) default NULL,
PRIMARY KEY (id)
)’;
dbDelta($sql);
[/php]
作成したプラグインを有効化する
WordPress にログインして作成したプラグイン(VenueListing)を有効化する。
Model, View, Controller を作成する
Venue テーブルを使った基本的な Model, View, Controller を作成する。
[bash gutter=”false”]
$ ../../wp-mvc/wpmvc generate scaffold VenueListing Venue
[/bash]
admin controller や model が作成されたため
WordPress で管理メニューに Venue が表示される。
登録画面の変更
追加画面(app/views/admin/venues/add.php)を変更する。
[php]
Add Venue
form->create($model->name); ?>
form->input(‘name’); ?>
form->input(‘url’, array(‘label’ => ‘URL’, ‘style’ => ‘width: 300px;’)); ?>
form->input(‘address1’, array(‘label’ => ‘Address 1’)); ?>
form->input(‘address2’, array(‘label’ => ‘Address 2’)); ?>
form->input(‘city’); ?>
form->input(‘state’, array(‘style’ => ‘width: 40px;’)); ?>
form->input(‘zip’, array(‘style’ => ‘width: 80px;’)); ?>
form->input(‘description’); ?>
form->end(‘Add’); ?>
[/php]
編集画面(app/views/admin/venues/edit.php)を変更する。
[php]
Edit Venue
html->object_link($object, array(‘controller’ => ‘venues’, ‘text’ => ‘View’)); ?>
form->create($model->name); ?>
form->input(‘name’); ?>
form->input(‘url’, array(‘label’ => ‘URL’, ‘style’ => ‘width: 300px;’)); ?>
form->input(‘address1’, array(‘label’ => ‘Address 1’)); ?>
form->input(‘address2’, array(‘label’ => ‘Address 2’)); ?>
form->input(‘city’); ?>
form->input(‘state’, array(‘style’ => ‘width: 40px;’)); ?>
form->input(‘zip’, array(‘style’ => ‘width: 80px;’)); ?>
form->input(‘description’); ?>
form->end(‘Update’); ?>
[/php]
表示画面の変更
表示画面(app/views/venues/show.php)を変更する。
[php]
__name; ?>
‘.$object->address1.’