-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplugin.php
More file actions
135 lines (94 loc) · 5.2 KB
/
Copy pathplugin.php
File metadata and controls
135 lines (94 loc) · 5.2 KB
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
<?php
/**
* Plugin Name: On Page®
* Description: Receives and syncs structured data from On Page® into WordPress, exposing a REST API under /wp-json/onpage/v1.
* Version: 1.0.1
* Requires at least: 7.1
* Requires PHP: 8.2
* Author: On Page®
* Author URI: https://www.onpage.it
* License: GPL-2.0-or-later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Update URI: false
*/
if (!defined('ABSPATH')) exit;
define('ONPAGE_PLUGIN_DIR', __DIR__);
// `src/Env.php` is deliberately not loaded: it reads the `.env` file, which only the tests in
// `src/Tests` use. A stray `.env` in the plugin folder is therefore never read in production.
require_once __DIR__ . '/src/Exceptions/HttpException.php';
require_once __DIR__ . '/src/helpers.php';
require_once __DIR__ . '/src/Services/Auth.php';
require_once __DIR__ . '/src/Services/Acf.php';
require_once __DIR__ . '/src/Services/FieldGroup.php';
require_once __DIR__ . '/src/Services/Input.php';
require_once __DIR__ . '/src/Services/MultiLang.php';
require_once __DIR__ . '/src/Services/Wpml.php';
require_once __DIR__ . '/src/Services/Media.php';
require_once __DIR__ . '/src/Services/PostRepository.php';
require_once __DIR__ . '/src/Services/Post.php';
require_once __DIR__ . '/src/Services/PostType.php';
require_once __DIR__ . '/src/Services/Svg.php';
require_once __DIR__ . '/src/Services/TermRepository.php';
require_once __DIR__ . '/src/Services/Term.php';
require_once __DIR__ . '/src/Services/Taxonomy.php';
require_once __DIR__ . '/src/Services/RemoteMedia.php';
require_once __DIR__ . '/src/Services/Migration.php';
require_once __DIR__ . '/src/Services/Index.php';
require_once __DIR__ . '/src/Services/Language.php';
require_once __DIR__ . '/src/Services/WooCommerce/Attribute.php';
require_once __DIR__ . '/src/Services/WooCommerce/Brand.php';
require_once __DIR__ . '/src/Services/WooCommerce/Term.php';
require_once __DIR__ . '/src/Services/WooCommerce/Taxonomy.php';
require_once __DIR__ . '/src/Services/WooCommerce/ProductDownloads.php';
require_once __DIR__ . '/src/Services/WooCommerce/Product.php';
require_once __DIR__ . '/src/Services/WooCommerce/VariantProduct.php';
require_once __DIR__ . '/src/Views/UI.php';
require_once __DIR__ . '/src/Controllers/FieldGroup.php';
require_once __DIR__ . '/src/Controllers/PostType.php';
require_once __DIR__ . '/src/Controllers/Post.php';
require_once __DIR__ . '/src/Controllers/Taxonomy.php';
require_once __DIR__ . '/src/Controllers/Term.php';
require_once __DIR__ . '/src/Controllers/Media.php';
require_once __DIR__ . '/src/Controllers/Migration.php';
require_once __DIR__ . '/src/Controllers/Index.php';
require_once __DIR__ . '/src/Controllers/Language.php';
require_once __DIR__ . '/src/Controllers/WooCommerce/Attribute.php';
require_once __DIR__ . '/src/Controllers/WooCommerce/AttributeTerm.php';
require_once __DIR__ . '/src/Controllers/WooCommerce/Brand.php';
require_once __DIR__ . '/src/Controllers/WooCommerce/Category.php';
require_once __DIR__ . '/src/Controllers/WooCommerce/Product.php';
require_once __DIR__ . '/src/Controllers/WooCommerce/VariantProduct.php';
require_once __DIR__ . '/src/Controllers/WooCommerce/Tag.php';
\OnPage\Services\Taxonomy::boot();
\OnPage\Services\WooCommerce\Product::boot();
\OnPage\Views\UI::boot();
require_once __DIR__ . '/src/Middlewares/Auth.php';
/**
* ACF is a hard dependency: every controller opens with `Acf::loadFieldTypeMap()`,
* which reaches `acf_get_field_groups()` with no guard, so without ACF the routes
* would answer `500 critical error` instead of a usable error. Rather than register
* routes that cannot work, the plugin registers none and says why. The On Page®
* settings page stays available: it only generates the auth token and never
* touches ACF.
*
* Checked on `plugins_loaded` — after every plugin is loaded — because a check at
* include time would depend on plugin load order.
*/
\add_action('plugins_loaded', function (): void {
if (\function_exists('acf_get_field_groups')) {
require_once ONPAGE_PLUGIN_DIR . '/src/routes.php';
// An ACF older than 6.1 still gets the routes, so every call answers the specific
// `500 acf_version_unsupported` (see Middlewares\Auth) rather than a bare 404.
if (!\OnPage\Services\Acf::isSupportedVersion()) {
\add_action('admin_notices', function (): void {
if (!\current_user_can('activate_plugins')) return;
echo '<div class="notice notice-error"><p><strong>On Page®</strong> requires <strong>Advanced Custom Fields</strong> ' . \esc_html(\OnPage\Services\Acf::MIN_VERSION) . ' or later. Version ' . \esc_html((string) \OnPage\Services\Acf::installedVersion()) . ' is active. The On Page® REST API answers every call with an error until ACF is updated.</p></div>';
});
}
return;
}
\add_action('admin_notices', function (): void {
if (!\current_user_can('activate_plugins')) return;
echo '<div class="notice notice-error"><p><strong>On Page®</strong> requires the <strong>Advanced Custom Fields</strong> plugin. The On Page® REST API stays disabled until ACF is installed and active.</p></div>';
});
});