-
Notifications
You must be signed in to change notification settings - Fork 0
/
cpt-wp-cli.php
142 lines (122 loc) · 3.43 KB
/
cpt-wp-cli.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
/**
* Plugin Name: Custom Post Types from WP-CLI
* Plugin URI: https://github.com/stfn00/cpt-wp-cli
* Description: Generates PHP code for registering a Custom Post Type in plugin with WP-CLI.
* Version: 1.0.0
* Author: Stefano Iachetta
* Author URI: https://github.com/stfn00
* Text Domain: cpt-wp-cli
* Domain Path: /languages
*/
if (!defined('ABSPATH')) exit; // Exit if accessed directly
if (!class_exists('WP_CLI')) return;
if (!class_exists('CPT_WP_CLI')) :
class CPT_WP_CLI
{
// The plugin version number.
var $version = '1.0.0';
/**
* __construct
*
* A dummy constructor to ensure CPT_WP_CLI is only setup once.
*
* @since 1.0.0
*
* @param void
* @return void
*/
function __construct()
{
// Do nothing.
}
/**
* initialize
*
* Sets up the CPT_WP_CLI plugin.
*
* @since 1.0.0
*
* @param void
* @return void
*/
function initialize()
{
// Define constants.
$this->define('CPT_WP_CLI', true);
$this->define('CPT_WP_CLI_PATH', plugin_dir_path(__FILE__));
$this->define('CPT_WP_CLI_BASENAME', plugin_basename(__FILE__));
$this->define('CPT_WP_CLI_VERSION', $this->version);
$this->define('CPT_WP_CLI_MAJOR_VERSION', 1);
// Add actions.
add_action('init', array($this, 'init'), 5);
}
/**
* init
*
* Completes the setup process on "init" of earlier.
*
* @since 1.0.0
*
* @param void
* @return void
*/
function init()
{
// Bail early if called directly from functions.php or plugin file.
if (!did_action('plugins_loaded')) {
return;
}
\WP_CLI::add_command('cpt-wp-cli', 'CPT_WP_CLI_COMMAND');
}
/**
* define
*
* Defines a constant if doesnt already exist.
*
* @since 1.0.0
*
* @param string $name The constant name.
* @param mixed $value The constant value.
* @return void
*/
function define($name, $value = true)
{
if (!defined($name)) {
define($name, $value);
}
}
}
/**
* cpt_wp_cli
*
* The main function responsible for returning the one true cpt_wp_cli Instance to functions everywhere.
* Use this function like you would a global variable, except without needing to declare the global.
*
* Example: <?php $cpt_wp_cli = cpt_wp_cli(); ?>
*
* @since 1.0.0
*
* @param void
* @return CPT_WP_CLI
*/
function cpt_wp_cli()
{
global $cpt_wp_cli;
// Instantiate only once.
if (!isset($cpt_wp_cli)) {
$cpt_wp_cli = new CPT_WP_CLI();
$cpt_wp_cli->initialize();
}
return $cpt_wp_cli;
}
// Composer autoload.
$cpt_wp_cli_autoloader = dirname(__FILE__) . '/vendor/autoload.php';
if (file_exists($cpt_wp_cli_autoloader)) {
require_once $cpt_wp_cli_autoloader;
}
// Include Class CPT_WP_CLI_COMMAND.
require_once 'inc/class-cpt-wp-cli-command.php';
// Instantiate.
cpt_wp_cli();
endif; // class_exists check