technote / wordpress-plugin-base
Wordpress Plugin Base
Requires
- php: >=5.6.0
- matthiasmullie/minify: ^1.3
- mobiledetect/mobiledetectlib: ^2.8
- tijsverkoyen/css-to-inline-styles: ^2.2
- yahnis-elsts/plugin-update-checker: ^4.4
Requires (Dev)
- phake/phake: 2.*
- phpunit/phpunit: 4.*
- dev-master
- v2.10.0
- v2.9.14
- v2.9.13
- v2.9.12
- v2.9.11
- v2.9.10
- v2.9.9
- v2.9.8
- v2.9.7
- v2.9.6
- v2.9.5
- v2.9.4
- v2.9.3
- v2.9.2
- v2.9.1
- v2.9.0
- v2.8.5
- v2.8.4
- v2.8.3
- v2.8.2
- v2.8.1
- v2.8.0
- v2.7.4
- v2.7.3
- v2.7.2
- v2.7.1
- v2.7.0
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.2.1
- v1.2.0
- 1.1.73
- 1.1.72
- 1.1.71
- 1.1.70
- 1.1.69
- 1.1.68
- 1.1.67
- 1.1.66
- 1.1.65
- 1.1.64
- 1.1.63
- 1.1.62
- 1.1.61
- 1.1.60
- 1.1.59
- 1.1.58
- 1.1.57
- 1.1.56
- 1.1.55
- 1.1.54
- 1.1.53
- 1.1.52
- 1.1.51
- 1.1.50
- 1.1.49
- 1.1.48
- 1.1.47
- 1.1.46
- 1.1.45
- 1.1.44
- 1.1.43
- 1.1.42
- 1.1.41
- 1.1.40
- 1.1.39
- 1.1.38
- 1.1.37
- 1.1.36
- 1.1.35
- 1.1.34
- 1.1.33
- 1.1.32
- 1.1.31
- 1.1.30
- 1.1.29
- 1.1.28
- 1.1.27
- 1.1.26
- 1.1.25
- 1.1.24
- 1.1.23
- 1.1.22
- 1.1.21
- 1.1.20
- 1.1.19
- 1.1.18
- 1.1.17
- 1.1.16
- 1.1.15
- 1.1.14
- 1.1.13
- 1.1.12
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-develop
- dev-images
This package is auto-updated.
Last update: 2020-02-04 20:26:23 UTC
README
Moved to
https://github.com/wp-content-framework/core
Wordpress plugin base
Wordpress plugin 開発用のライブラリです。
管理画面やAPIなどの追加や設定値の読み書き等を容易にする機能が用意されています。
要件
- PHP 5.6 以上
- WordPress 3.9.3 以上
手順
プラグインフォルダの作成
wp-content/plugins フォルダに プラグイン用のフォルダを作成
プラグインファイルの作成
作成したプラグインフォルダに「プラグイン名.php」(例:example.php) を作成
標準プラグイン情報
を参考にプラグインの情報を入力
このライブラリのインストール
composer を使用してインストールします。
作成したプラグインフォルダで以下のコマンドを実行します。
composer require technote/wordpress-plugin-base
複数のプラグインでこのライブラリを使用する場合、最新のものが自動的に使用されます。
このライブラリの使用
作成したプラグインファイルにライブラリを使用する記述を追記します。
プラグインファイルはおおよそ以下のようなものになります。
<?php
/*
Plugin Name: example
Plugin URI:
Description: Plugin Description
Author: example
Version: 0.0.0
Author URI: http://example.com/
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
@require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
Technote::get_instance( 'Example', __FILE__ );
このプラグインファイルと同じフォルダに「functions.php」を作成すると、いろいろな準備ができた後に自動的に読み込まれます。
プラグインの構成は以下のようなものになります。
example
|
- example.php
|
- functions.php
|
- src
| |
- classes
| | |
| | - controllers
| | | |
| | | - admin
| | | |
| | | - api
| | |
| | - models
| | |
| | - tests
| |
| - views
| |
| - admin
| |
| - help
|
- configs
基本設定
- configs/config.php
設定値 | 説明 |
---|---|
main_menu_title | 管理画面のメニュー名になります |
db_version | DBの設定を変更したら更新します |
ツイッターのアカウントを指定します(ダッシュボードでヘルプに表示されます。空で未使用) | |
github | Githubのアカウントを指定します(ダッシュボードでヘルプに表示されます。空で未使用) |
contact_url | プラグインのお問い合わせ用のページのURLを指定します(ダッシュボードでヘルプに表示されます) |
menu_image | 管理画面のメニューアイコンを指定します |
update_info_file_url | 開発バージョンチェック情報用のURLを指定します |
- configs/db.php
設定例:
// テーブル名 => 設定
'test' => array(
// primary key 設定
'id' => 'test_id', // optional [default = $table_name . '_id']
// カラム 設定
'columns' => array(
// 論理名 => 設定
'name' => array(
'name' => 'name_test', // optional (物理名)
'type' => 'VARCHAR(32)', // required
'unsigned' => false, // optional [default = false]
'null' => true, // optional [default = true]
'default' => null, // optional [default = null]
'comment' => '', // optional
),
'value1' => array(
'type' => 'VARCHAR(32)',
'null' => false,
'default' => 'test',
),
'value2' => array(
'type' => 'VARCHAR(32)',
'comment' => 'aaaa',
),
'value3' => array(
'type' => 'INT(11)',
'null' => false,
'comment' => 'bbb',
),
),
// index 設定
'index' => array(
// key index
'key' => array(
'name' => array( 'name' ),
),
// unique index
'unique' => array(
'value' => array( 'value1', 'value2' ),
),
),
// 論理削除 or 物理削除
'delete' => 'logical', // physical or logical [default = physical]
),
設定を更新したら configs/config.php の db_version も更新します。
自動でテーブルの追加・更新が行われます。
データの取得・挿入・更新・削除は以下のように行います。
// 取得
$this->app->db->select( 'test', array(
'id' => array( 'in', array( 1, 2, 3 ) ),
'value1' => array( 'like', 'tes%' ),
'created_at' => array( '<', '2018-06-03' ),
'value2' => null,
'value3' => 3,
) );
// 挿入
$this->app->db->insert( 'test', array(
'name' => 'aaa',
'value1' => 'bbb',
'value3' => 100,
) );
// 更新
$this->app->db->update( 'test', array(
'value2' => 'ccc',
), array(
'id' => 4,
) );
// 削除
$this->app->db->delete( 'test', array(
'id' => 4,
) );
select 以外は 内部でWordPress標準の関数を使用しているため、
条件の指定の仕方は 'key' => 'value' (key = value) のみ可能です。
select の条件指定はライブラリ側で構築しており、
key = value
key' => 'value'
key in ( val1, val2, val3 )
'key' => array( 'in', array( val1, val2, val3 ) )
key like '%value%'
'key' => array( 'like', '%value%' )
などが指定可能です。
- configs/setting.php
設定例:
// priority => 詳細
'10' => array(
// 設定グループ => 詳細
'Performance' => array(
// priority => 詳細
'10' => array(
// 設定名 => 詳細
'minify_js' => array(
// 説明
'label' => 'Whether to minify js which generated by this plugin',
// タイプ (bool or int or float or string)
'type' => 'bool', // [default = string]
// デフォルト値
'default' => true,
),
'minify_css' => array(
'label' => 'Whether to minify css which generated by this plugin',
'type' => 'bool',
'default' => true,
),
),
),
),
設定ページで設定可能になります。
プログラムで使用するには以下のようにします。
$this->apply_filters( 'minify_js' ) // true or false
if ( $this->apply_filters( 'minify_js' ) ) {
// ...
}
-
configs/filter.php
今後ドキュメント追加予定 -
configs/slug.php
今後ドキュメント追加予定 -
configs/capability.php
今後ドキュメント追加予定
画面の追加
- src/classes/controllers/admin に PHP ファイル (例:test.php) を追加
<?php
namespace Example\Classes\Controllers\Admin;
if ( ! defined( 'TECHNOTE_PLUGIN' ) ) {
exit;
}
class Test extends \Technote\Classes\Controllers\Admin\Base {
// タイトル
public function get_page_title() {
return 'Test';
}
// GET の時に行う動作
protected function get_action() {
}
// POST の時に行う動作
protected function post_action() {
$aaa = $this->app->input->post( 'aaa' );
// ...
}
// GET, POST 共通で行う動作
protected function common_action() {
// wp_enqueue_script('media-upload');
}
// view に渡す変数設定
public function get_view_args() {
return array(
'test' => 'aaaa',
);
}
}
POST の時に行う動作は事前にnonce checkが行われます。
- src/views/admin に PHP ファイル (例:test.php) を追加
<?php
if ( ! defined( 'TECHNOTE_PLUGIN' ) ) {
return;
}
/** @var \Technote\Interfaces\Presenter $instance */
/** @var string $test */
?>
<?php $instance->form( 'open', $args ); ?>
<?php $instance->h( $test ); ?>
<?php $instance->form( 'input/submit', $args, array(
'name' => 'update',
'value' => 'Update',
'class' => 'button-primary'
) ); ?>
<?php $instance->form( 'close', $args ); ?>
-
$instance
- h:esc_html
- dump:var_dump
- id
- form
- url
- img
-
ヘルプの追加
- src/classes/controllers/admin に追加した上記 PHP ファイル に以下を追記
protected function get_help_contents() {
return array(
array(
'title' => 'Test',
'view' => 'test',
)
);
}
-
- src/views/admin/help に PHP ファイル (例:test.php) を追加
<?php
if ( ! defined( 'TECHNOTE_PLUGIN' ) ) {
return;
}
/** @var \Technote\Interfaces\Presenter $instance */
?>
test
API の追加
今後ドキュメント追加予定
filter の追加
今後ドキュメント追加予定
cron の追加
今後ドキュメント追加予定
テストの追加
-
PHPUnitの追加
composer require --dev phpunit/phpunit
-
src/classes/tests に PHP ファイル (例:sample.php) を追加
<?php
namespace Example\Classes\Tests;
if ( ! defined( 'TECHNOTE_PLUGIN' ) ) {
exit;
}
/**
* Class Sample
* @package Example\Classes\Tests
*/
class Sample extends \Technote\Classes\Tests\Base {
public function test_sample1() {
$this->assertEquals( 2, 1 + 1 );
}
public function test_sample2() {
$this->assertEquals( 1, 1 + 1 );
}
}
- 管理画面から実行