PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.1-a.5
16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / _inc / content-guidelines-ai.php
jetpack / _inc Last commit date
blocks 1 day ago build 1 day ago fonts 1 year ago genericons 5 months ago lib 1 day ago accessible-focus.js 6 years ago blogging-prompts.php 1 month ago class.jetpack-provision.php 7 months ago content-guidelines-ai.js 1 week ago content-guidelines-ai.php 1 day ago crowdsignal-shortcode.js 1 year ago crowdsignal-survey.js 6 years ago deprecate.js 8 months ago facebook-embed.js 4 years ago gallery-settings.js 6 years ago genericons.php 1 year ago jetpack-admin.js 3 years ago jetpack-deactivate-dialog.js 1 year ago jetpack-modules.js 1 year ago jetpack-modules.models.js 8 months ago jetpack-modules.views.js 8 months ago polldaddy-shortcode.js 1 week ago site-switcher-endpoint.php 6 months ago site-switcher.jsx 1 week ago site-switcher.php 5 months ago social-logos.php 3 months ago twitter-timeline.js 1 month ago
content-guidelines-ai.php
116 lines
1 <?php
2 /**
3 * Content Guidelines AI — Jetpack AI integration.
4 *
5 * Enqueues a standalone JS bundle on the Content Guidelines admin page
6 * that adds AI-powered guideline generation via Jetpack.
7 *
8 * @package automattic/jetpack
9 */
10
11 use Automattic\Jetpack\Assets;
12 use Automattic\Jetpack\Status\Host;
13 use Automattic\Jetpack\Tracking;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit( 0 );
17 }
18
19 /**
20 * Enqueue content-guidelines-ai script on the Content Guidelines admin page.
21 *
22 * @since 16.0
23 *
24 * @param string $hook_suffix The current admin page hook suffix.
25 */
26 function jetpack_content_guidelines_ai_enqueue_scripts( $hook_suffix ) {
27 if ( 'settings_page_guidelines-wp-admin' !== $hook_suffix ) {
28 return;
29 }
30
31 // Content Guidelines AI is only offered on WordPress.com platform sites
32 // (Simple and Atomic) — a hard gate the jetpack_ai_enabled filter below
33 // cannot widen. Free-tier Simple/Atomic sites still load the bundle so
34 // the upgrade path can be shown — the paid-plan requirement is enforced
35 // by the suggest-guidelines API.
36 if ( ! ( new Host() )->is_wpcom_platform() ) {
37 return;
38 }
39
40 // Bail when Jetpack AI is disabled for the site: the AI settings master
41 // switch and other site-wide disables ride this filter.
42 /** This filter is documented in projects/plugins/jetpack/_inc/lib/class-jetpack-ai-helper.php */
43 if ( ! apply_filters( 'jetpack_ai_enabled', true ) ) {
44 return;
45 }
46
47 // Bail when build artifacts are missing rather than enqueueing a script
48 // with guessed (and likely wrong) dependencies.
49 if ( ! file_exists( JETPACK__PLUGIN_DIR . '_inc/build/content-guidelines-ai.min.asset.php' ) ) {
50 return;
51 }
52
53 // The bundle records Tracks events via @automattic/jetpack-analytics,
54 // which only queues into window._tkq. Enqueue the Tracks client (w.js)
55 // so events send without relying on whichever platform widgets happen
56 // to load it.
57 Tracking::register_tracks_functions_scripts( true );
58
59 // Handles dependencies/version from the asset file, JS translations for
60 // the text domain, the CSS (including the .rtl.css variant), and style
61 // dependencies derived from the script's.
62 Assets::register_script(
63 'jetpack-content-guidelines-ai',
64 '_inc/build/content-guidelines-ai.min.js',
65 JETPACK__PLUGIN_FILE,
66 array(
67 'in_footer' => true,
68 'textdomain' => 'jetpack',
69 'css_path' => '_inc/build/content-guidelines-ai.css',
70 'enqueue' => true,
71 )
72 );
73
74 // Jetpack_AI_Helper backs both preloaded values below: the per-user
75 // "banner dismissed" flag and the AI feature state.
76 if ( ! class_exists( 'Jetpack_AI_Helper' ) && is_readable( JETPACK__PLUGIN_DIR . '_inc/lib/class-jetpack-ai-helper.php' ) ) {
77 require_once JETPACK__PLUGIN_DIR . '_inc/lib/class-jetpack-ai-helper.php';
78 }
79
80 // Preload the per-user "banner dismissed" flag so the empty-state banner
81 // doesn't flash before an async read. Persisted via the
82 // guidelines-banner-dismissed REST endpoint, but read via Jetpack_AI_Helper
83 // rather than the endpoint class: on Simple sites the wpcom-endpoints
84 // classes are only loaded in REST requests, so a class_exists() check on
85 // the endpoint always failed here and permanently suppressed the banner
86 // and upgrade notice.
87 $initial_state = array(
88 'bannerDismissed' => class_exists( 'Jetpack_AI_Helper' ) && Jetpack_AI_Helper::is_guidelines_banner_dismissed(),
89 );
90
91 // Resolve the AI feature state server-side so the bundle can hydrate the
92 // wordpress-com/plans store at boot and render the correct locked/unlocked
93 // buttons on first paint, with no client-side plan fetch. On WordPress.com
94 // Simple this is a synchronous local lookup; on Atomic/self-hosted it is
95 // transient-cached with a blocking remote refresh when cold. On failure
96 // the key is omitted and the bundle renders no AI UI for this load (fail
97 // closed) rather than guessing.
98 if ( class_exists( 'Jetpack_AI_Helper' ) ) {
99 $ai_feature = Jetpack_AI_Helper::get_ai_assistance_feature();
100 if ( ! is_wp_error( $ai_feature ) ) {
101 $initial_state['aiFeature'] = $ai_feature;
102 }
103 }
104
105 wp_add_inline_script(
106 'jetpack-content-guidelines-ai',
107 'window.jetpackContentGuidelinesAi = ' . wp_json_encode(
108 $initial_state,
109 JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT
110 ) . ';',
111 'before'
112 );
113 }
114
115 add_action( 'admin_enqueue_scripts', 'jetpack_content_guidelines_ai_enqueue_scripts' );
116