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プラグインをインストール/有効化する。

プラグインを作成する準備

コード生成ツールに実行権限を追加する。

$ cd path/to/plugins/wp-mvc
$ chmod +x wpmvc

プラグインのベースを作成する

プラグイン(VenueListing)のベースを作成する。

$ ./wpmvc generate plugin VenueListing

以下の場所にプラグインのベースになるファイルが生成される。
path/to/plugins/venue-listing

DBのテーブルを作成する

プラグインの有効化時に必要なDBテーブル(venues)を作成するためのコードを追加する。

$ cd path/to/plugins/venue-listing

venue-listing_loader.php の編集する。
line 21 – 22 あたり

    // 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);

作成したプラグインを有効化する

WordPress にログインして作成したプラグイン(VenueListing)を有効化する。

Model, View, Controller を作成する

Venue テーブルを使った基本的な Model, View, Controller を作成する。

$ ../../wp-mvc/wpmvc generate scaffold VenueListing Venue

admin controller や model が作成されたため
WordPress で管理メニューに Venue が表示される。

登録画面の変更

追加画面(app/views/admin/venues/add.php)を変更する。

<h2>Add Venue</h2>

<?php echo $this->form->create($model->name); ?>
<?php echo $this->form->input('name'); ?>
<?php echo $this->form->input('url', array('label' => 'URL', 'style' => 'width: 300px;')); ?>
<?php echo $this->form->input('address1', array('label' => 'Address 1')); ?>
<?php echo $this->form->input('address2', array('label' => 'Address 2')); ?>
<?php echo $this->form->input('city'); ?>
<?php echo $this->form->input('state', array('style' => 'width: 40px;')); ?>
<?php echo $this->form->input('zip', array('style' => 'width: 80px;')); ?>
<?php echo $this->form->input('description'); ?>
<?php echo $this->form->end('Add'); ?>

編集画面(app/views/admin/venues/edit.php)を変更する。

<h2>Edit Venue</h2>

<?php echo $this->html->object_link($object, array('controller' => 'venues', 'text' => 'View')); ?>

<?php echo $this->form->create($model->name); ?>
<?php echo $this->form->input('name'); ?>
<?php echo $this->form->input('url', array('label' => 'URL', 'style' => 'width: 300px;')); ?>
<?php echo $this->form->input('address1', array('label' => 'Address 1')); ?>
<?php echo $this->form->input('address2', array('label' => 'Address 2')); ?>
<?php echo $this->form->input('city'); ?>
<?php echo $this->form->input('state', array('style' => 'width: 40px;')); ?>
<?php echo $this->form->input('zip', array('style' => 'width: 80px;')); ?>
<?php echo $this->form->input('description'); ?>
<?php echo $this->form->end('Update'); ?>

表示画面の変更

表示画面(app/views/venues/show.php)を変更する。

<h2><?php echo $object->__name; ?></h2>

<div>
 <?php echo $this->html->link('Website', $object->url); ?>
</div>

<?php
echo '<div>'.$object->address1.'</div>';
if (!empty($object->address2)) {
  echo '<div>'.$object->address2.'</div>';
}
echo '<div>'.$object->city.', '.$object->state.', '.$object->zip.'</div>';
?>

<p>
        <?php echo $this->html->link('&#8592; All Venues', array('controller' => 'venues')); ?>
</p>

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

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


WordPress プラグインの MVC フレームワーク WP MVC を試してみた への2件のフィードバック

  1. ピンバック: WP MVC のサンプルプラグインのインストール | Better Than Nothing

  2. ピンバック: WP MVCプラグインをWindows+XAMMP環境で使えるようにしてみた | webOpixel