'; echo Skeleton::panel(__('Bulk Posts', 'ai-content-generation'), [], 5); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped inside Skeleton echo '
'; } public function enqueue(string $hook): void { if (substr($hook, -strlen(self::PAGE_SLUG)) !== self::PAGE_SLUG) { return; } $asset_file = WPWAND_NEW_DIR . 'build/bulk.asset.php'; if (!is_readable($asset_file)) { return; } $asset = require $asset_file; wp_enqueue_script(self::HANDLE, WPWAND_NEW_URL . 'build/bulk.js', $asset['dependencies'], $asset['version'], true); // No webfont request here on purpose: hitting fonts.googleapis.com from wp-admin is a // third-party round trip nobody asked for and a wordpress.org review flag. Every rule in the // stylesheet reads --wpwand-font, which names Inter first and then the platform UI stack, so // a machine without Inter renders one consistent typeface rather than two. if (is_readable(WPWAND_NEW_DIR . 'build/style-bulk.css')) { wp_enqueue_style(self::HANDLE, WPWAND_NEW_URL . 'build/style-bulk.css', [], (string) filemtime(WPWAND_NEW_DIR . 'build/style-bulk.css')); } ScriptConfig::merge(self::HANDLE, ScriptConfig::base() + [ 'brand' => \WPWand\Data\Brand::resolve()['color'], 'isPro' => \WPWand\Generation\UsageLimits::is_pro(), 'bulkPerRunFree' => \WPWand\Generation\UsageLimits::FREE_BULK_PER_RUN, ]); if (function_exists('wp_set_script_translations')) { wp_set_script_translations(self::HANDLE, 'ai-content-generation'); } } }