plugin = $plugin; } 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 Pro' is available if (true === $this->plugin->isAcfPluginAvailable(true)) { 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(CurrentScreen $currentScreen): void { if (false === $currentScreen->isAdmin() || (false === $currentScreen->isAdminCptRelated(ViewsCpt::NAME) && false === $currentScreen->isAdminCptRelated(CardsCpt::NAME) && false === $currentScreen->isAjax())) { return; } // 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); } }