WordPress プラグインの MVC フレームワーク WP MVC を試してみた

WordPress プラグイン開発の MVC フレームワーク WP MVC を使って
DBの拡張や管理画面/管理メニューの作成などを作成してみた。

今回は、WP MVC を使ったプラグインの開発方法について公式サイトのチュートリアルを試してみた。

チュートリアル | WP MVC(公式サイト)

WP MVC の情報

WP MVC | WordPress公式リポジトリ

WP MVC(公式サイト)

GitHub

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; ?>

html->link(‘Website’, $object->url); ?>

‘.$object->address1.’

‘;
if (!empty($object->address2)) {
echo ‘

‘.$object->address2.’

‘;
}
echo ‘

‘.$object->city.’, ‘.$object->state.’, ‘.$object->zip.’

‘;
?>

html->link(‘← All Venues’, array(‘controller’ => ‘venues’)); ?>

[/php]

作成したプラグインの確認

管理画面の Venues から追加や編集、
一覧/詳細のページを作成するプラグインができた。