PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.3-beta
16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 All 507 releases
jetpack / jetpack_vendor / automattic / jetpack-ads / build / widgets.php

widgets.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-beta, at jetpack_vendor/automattic/jetpack-ads/build/widgets.php

114 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Widget registration - Auto-generated by build process.
4 * Registers all widget script modules discovered from widgets/.
5 * Do not edit this file manually.
6 *
7 * @package jetpack_ads
8 */
9
10 /**
11 * Register widget script modules.
12 *
13 * Registers each widget's render and metadata as script modules via
14 * wp_register_script_module.
15 *
16 * Module IDs follow core's route pattern and use the widget directory name:
17 * jetpack-ads/widgets/{widget-dir-name}/render
18 * jetpack-ads/widgets/{widget-dir-name}/widget
19 */
20 function jetpack_ads_register_widget_modules() {
21 $widgets = jetpack_ads_get_registered_widget_modules();
22 if ( empty( $widgets ) ) {
23 return;
24 }
25
26 $build_constants = require __DIR__ . '/constants.php';
27 $extension = '.min.js';
28
29 foreach ( $widgets as $widget ) {
30 $widget_name = $widget['dir_name'];
31
32 // Register render script module if built.
33 if ( ! empty( $widget['render_module'] ) ) {
34 $render_asset_path = __DIR__ . "/widgets/{$widget_name}/render.min.asset.php";
35 if ( file_exists( $render_asset_path ) ) {
36 $render_asset = require $render_asset_path;
37 // Deregister first to override any previously registered version
38 // (e.g., Core's default modules when running as a plugin).
39 wp_deregister_script_module( $widget['render_module'] );
40 wp_register_script_module(
41 $widget['render_module'],
42 $build_constants['build_url'] . 'widgets/' . $widget_name . '/render' . $extension,
43 $render_asset['module_dependencies'] ?? array(),
44 $render_asset['version'] ?? false
45 );
46 }
47 }
48
49 // Register widget metadata script module if built.
50 if ( ! empty( $widget['widget_module'] ) ) {
51 $widget_asset_path = __DIR__ . "/widgets/{$widget_name}/widget.min.asset.php";
52 if ( file_exists( $widget_asset_path ) ) {
53 $widget_asset = require $widget_asset_path;
54 // Deregister first to override any previously registered version
55 // (e.g., Core's default modules when running as a plugin).
56 wp_deregister_script_module( $widget['widget_module'] );
57 wp_register_script_module(
58 $widget['widget_module'],
59 $build_constants['build_url'] . 'widgets/' . $widget_name . '/widget' . $extension,
60 $widget_asset['module_dependencies'] ?? array(),
61 $widget_asset['version'] ?? false
62 );
63 }
64 }
65 }
66 }
67
68 // Register immediately if init already fired, otherwise defer.
69 if ( did_action( 'init' ) ) {
70 jetpack_ads_register_widget_modules();
71 } else {
72 add_action( 'init', 'jetpack_ads_register_widget_modules' );
73 }
74
75 /**
76 * Returns the widgets discovered by the build pipeline, with their
77 * script-module handles resolved.
78 *
79 * Reads `build/widgets/registry.php` once and memoizes the result for the
80 * remainder of the request. Each entry is augmented with `render_module`
81 * and `widget_module` (the script-module handles), kept null when the
82 * corresponding source file was not present at build time. Consumers
83 * should treat the array as read-only; authoring of widget types is
84 * build-driven via the `widgets/` folder.
85 *
86 * @return array<int, array<string, mixed>> List of widgets with resolved
87 * module handles.
88 */
89 function jetpack_ads_get_registered_widget_modules() {
90 static $widgets = null;
91
92 if ( null === $widgets ) {
93 $registry_file = __DIR__ . '/widgets/registry.php';
94 $raw = file_exists( $registry_file ) ? require $registry_file : array();
95 if ( ! is_array( $raw ) ) {
96 $raw = array();
97 }
98 $widgets = array_map(
99 static function ( $widget ) {
100 $widget['render_module'] = ! empty( $widget['has_render'] )
101 ? 'jetpack-ads/widgets/' . $widget['dir_name'] . '/render'
102 : null;
103 $widget['widget_module'] = ! empty( $widget['has_widget'] )
104 ? 'jetpack-ads/widgets/' . $widget['dir_name'] . '/widget'
105 : null;
106 return $widget;
107 },
108 $raw
109 );
110 }
111
112 return $widgets;
113 }
114