plugin = $plugin; $this->viewsCpt = $viewsCpt; $this->cardsCpt = $cardsCpt; } public function include_field_types(): void { include_once __DIR__ . '/inc/class-acf-field-clone.php'; include_once __DIR__ . '/inc/class-acf-repeater-table.php'; include_once __DIR__ . '/inc/class-acf-field-repeater.php'; include_once __DIR__ . '/inc/options-page.php'; include_once __DIR__ . '/inc/admin-options-page.php'; include_once __DIR__ . '/inc/class-acf-location-options-page.php'; } public function register_assets(): void { // register scripts wp_register_script( 'acf-pro-input', $this->plugin->getAcfProAssetsUrl('acf-pro-input.min.js'), array('acf-input'), $this->plugin->getVersion() ); // register styles wp_register_style( 'acf-pro-input', $this->plugin->getAcfProAssetsUrl('acf-pro-input.min.css'), array('acf-input'), $this->plugin->getVersion() ); } public function input_admin_enqueue_scripts(): void { wp_enqueue_script('acf-pro-input'); wp_enqueue_style('acf-pro-input'); } public function maybeIncludeFeatures(): void { // skip if 'ACF' is not available (both versions) OR // 'ACF PRO' is available OR // not our admin request if (!$this->plugin->isAcfPluginAvailable() || $this->plugin->isAcfPluginAvailable(true) || (!$this->viewsCpt->isMyAdminRequest() && !$this->cardsCpt->isMyAdminRequest())) { return; } add_action('init', array($this, 'register_assets')); add_action('acf/include_field_types', array($this, 'include_field_types'), 5); add_action('acf/input/admin_enqueue_scripts', array($this, 'input_admin_enqueue_scripts')); } public function setHooks(bool $isAdmin): void { // only since 'plugins_loaded' we can judge if ACF is loaded or not // 20, to be after AcfDependency->maybeIncludeAcfPlugin() add_action('plugins_loaded', [$this, 'maybeIncludeFeatures'], 20); } }