Skip to content

Commit 885627a

Browse files
Scripts & Styles: Update registration & enqueue best practices (#306)
1 parent 63a86d9 commit 885627a

File tree

12 files changed

+112
-91
lines changed

12 files changed

+112
-91
lines changed

src/addons/initialization.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,33 @@ final class Plugin {
2222
* @access public
2323
*/
2424
public function init(): void {
25+
add_action( 'elementor/frontend/after_register_styles', [ $this, 'register_frontend_styles' ] );
26+
add_action( 'elementor/frontend/after_register_scripts', [ $this, 'register_frontend_scripts' ] );
2527

26-
add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'frontend_styles' ] );
27-
add_action( 'elementor/frontend/after_register_scripts', [ $this, 'frontend_scripts' ] );
28-
28+
add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'enqueue_frontend_styles' ] );
29+
add_action( 'elementor/frontend/after_enqueue_scripts', [ $this, 'enqueue_frontend_scripts' ] );
2930
}
3031

31-
public function frontend_styles(): void {
32-
32+
public function register_frontend_styles(): void {
3333
wp_register_style( 'frontend-style-1', plugins_url( 'assets/css/frontend-style-1.css', __FILE__ ) );
3434
wp_register_style( 'frontend-style-2', plugins_url( 'assets/css/frontend-style-2.css', __FILE__ ), [ 'external-framework' ] );
3535
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
36-
37-
wp_enqueue_style( 'frontend-style-1' );
38-
wp_enqueue_style( 'frontend-style-2' );
39-
4036
}
4137

42-
public function frontend_scripts(): void {
43-
38+
public function register_frontend_scripts(): void {
4439
wp_register_script( 'frontend-script-1', plugins_url( 'assets/js/frontend-script-1.js', __FILE__ ) );
4540
wp_register_script( 'frontend-script-2', plugins_url( 'assets/js/frontend-script-2.js', __FILE__ ), [ 'external-library' ] );
4641
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
42+
}
43+
44+
public function enqueue_frontend_styles(): void {
45+
wp_enqueue_style( 'frontend-style-1' );
46+
wp_enqueue_style( 'frontend-style-2' );
47+
}
4748

49+
public function enqueue_frontend_scripts(): void {
4850
wp_enqueue_script( 'frontend-script-1' );
4951
wp_enqueue_script( 'frontend-script-2' );
50-
5152
}
5253

5354
}

src/scripts-styles/control-scripts.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,25 @@ When you create new [Elementor controls](./../controls/) and need to register cu
66

77
## Registering Control Scripts
88

9-
In the example below, we'll register scripts and enqueue them when creating new controls:
9+
In the example below, we'll register scripts when creating new controls:
1010

11-
```php
12-
class Elementor_Test_Control extends \Elementor\Base_Control {
11+
```php {6}
12+
function my_plugin_register_control_scripts() {
13+
wp_register_script( 'control-script-1', plugins_url( 'assets/js/control-script-1.js', __FILE__ ) );
14+
wp_register_script( 'control-script-2', plugins_url( 'assets/js/control-script-2.js', __FILE__ ), [ 'external-library' ] );
15+
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
16+
}
17+
add_action( 'wp_enqueue_scripts', 'my_plugin_register_control_scripts' );
18+
```
1319

14-
protected function enqueue(): void {
20+
Then, the control class will enqueue the scripts:
1521

16-
wp_register_script( 'control-script-1', plugins_url( 'assets/js/control-script-1.js', __FILE__ ) );
17-
wp_register_script( 'control-script-2', plugins_url( 'assets/js/control-script-2.js', __FILE__ ), [ 'external-library' ] );
18-
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
22+
```php {3}
23+
class Elementor_Test_Control extends \Elementor\Base_Control {
1924

25+
protected function enqueue(): void {
2026
wp_enqueue_script( 'control-script-1' );
2127
wp_enqueue_script( 'control-script-2' );
22-
2328
}
2429

2530
}

src/scripts-styles/control-styles.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,25 @@ When you create new [Elementor controls](./../controls/) and need to register cu
66

77
## Registering Control Styles
88

9-
In the example below, we'll register stylesheets and enqueue them when creating new controls:
9+
In the example below, we'll register stylesheets when creating new controls:
1010

11-
```php
12-
class Elementor_Test_Control extends \Elementor\Base_Control {
11+
```php {6}
12+
function my_plugin_register_control_styles() {
13+
wp_register_style( 'control-style-1', plugins_url( 'assets/css/control-style-1.css', __FILE__ ) );
14+
wp_register_style( 'control-style-2', plugins_url( 'assets/css/control-style-2.css', __FILE__ ), [ 'external-framework' ] );
15+
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
16+
}
17+
add_action( 'wp_enqueue_scripts', 'my_plugin_register_control_styles' );
18+
```
1319

14-
protected function enqueue(): void {
20+
Then, the control class will enqueue the styles:
1521

16-
wp_register_style( 'control-style-1', plugins_url( 'assets/css/control-style-1.css', __FILE__ ) );
17-
wp_register_style( 'control-style-2', plugins_url( 'assets/css/control-style-2.css', __FILE__ ), [ 'external-framework' ] );
18-
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
22+
```php {3}
23+
class Elementor_Test_Control extends \Elementor\Base_Control {
1924

25+
protected function enqueue(): void {
2026
wp_enqueue_style( 'control-style-1' );
2127
wp_enqueue_style( 'control-style-2' );
22-
2328
}
2429

2530
}

src/scripts-styles/editor-scripts.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,40 @@
22

33
<Badge type="tip" vertical="top" text="Elementor Core" /> <Badge type="warning" vertical="top" text="Intermediate" />
44

5-
When you develop addons that extend [Elementor Editor](./../editor/) and you have your own custom scripts, use `elementor/editor/before_enqueue_scripts` or `elementor/editor/after_enqueue_scripts` action hooks, which are fired when editor scripts are registered and enqueued.
5+
When you develop addons that extend [Elementor Editor](./../editor/) and you have custom scripts, use `elementor/editor/before_enqueue_scripts` or `elementor/editor/after_enqueue_scripts` action hooks, which are fired when editor scripts are registered and enqueued.
66

77
## Registering Editor Scripts
88

99
In the example below, we'll register and enqueue custom scripts **before** Elementor scripts are registered and enqueued:
1010

11-
```php {11}
12-
function my_plugin_editor_scripts() {
13-
11+
```php {6,12}
12+
function my_plugin_register_editor_scripts() {
1413
wp_register_script( 'editor-script-1', plugins_url( 'assets/js/editor-script-1.js', __FILE__ ) );
1514
wp_register_script( 'editor-script-2', plugins_url( 'assets/js/editor-script-2.js', __FILE__ ), [ 'external-library' ] );
1615
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
16+
}
17+
add_action( 'wp_enqueue_scripts', 'my_plugin_register_editor_scripts' );
1718

19+
function my_plugin_enqueue_editor_scripts() {
1820
wp_enqueue_script( 'editor-script-1' );
1921
wp_enqueue_script( 'editor-script-2' );
20-
2122
}
22-
add_action( 'elementor/editor/before_enqueue_scripts', 'my_plugin_editor_scripts' );
23+
add_action( 'elementor/editor/before_enqueue_scripts', 'my_plugin_enqueue_editor_scripts' );
2324
```
2425

2526
Now we'll register and enqueue custom scripts **after** Elementor scripts are registered and enqueued:
2627

27-
```php {11}
28-
function my_plugin_editor_scripts() {
29-
28+
```php {6,12}
29+
function my_plugin_register_editor_scripts() {
3030
wp_register_script( 'editor-script-1', plugins_url( 'assets/js/editor-script-1.js', __FILE__ ) );
3131
wp_register_script( 'editor-script-2', plugins_url( 'assets/js/editor-script-2.js', __FILE__ ), [ 'external-library' ] );
3232
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
33+
}
34+
add_action( 'wp_enqueue_scripts', 'my_plugin_register_editor_scripts' );
3335

36+
function my_plugin_enqueue_editor_scripts() {
3437
wp_enqueue_script( 'editor-script-1' );
3538
wp_enqueue_script( 'editor-script-2' );
36-
3739
}
38-
add_action( 'elementor/editor/after_enqueue_scripts', 'my_plugin_editor_scripts' );
40+
add_action( 'elementor/editor/after_enqueue_scripts', 'my_plugin_enqueue_editor_scripts' );
3941
```

src/scripts-styles/editor-styles.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,40 @@
22

33
<Badge type="tip" vertical="top" text="Elementor Core" /> <Badge type="warning" vertical="top" text="Intermediate" />
44

5-
When you develop addons that extend [Elementor Editor](./../editor/) and you are using your own custom stylesheets, use `elementor/editor/before_enqueue_styles` or `elementor/editor/after_enqueue_scripts` action hooks, which are fired when editor styles are registered and enqueued.
5+
When you develop addons that extend [Elementor Editor](./../editor/) and you have custom stylesheets, use `elementor/editor/before_enqueue_styles` or `elementor/editor/after_enqueue_scripts` action hooks, which are fired when editor styles are registered and enqueued.
66

77
## Registering Editor Styles
88

99
In the example below, we'll register and enqueue custom stylesheets **before** Elementor styles are registered and enqueued:
1010

11-
```php {11}
12-
function my_plugin_editor_styles() {
13-
11+
```php {6,12}
12+
function my_plugin_register_editor_styles() {
1413
wp_register_style( 'editor-style-1', plugins_url( 'assets/css/editor-style-1.css', __FILE__ ) );
1514
wp_register_style( 'editor-style-2', plugins_url( 'assets/css/editor-style-2.css', __FILE__ ), [ 'external-framework' ] );
1615
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
16+
}
17+
add_action( 'elementor/editor/before_register_styles', 'my_plugin_register_editor_styles' );
1718

19+
function my_plugin_enqueue_editor_styles() {
1820
wp_enqueue_style( 'editor-style-1' );
1921
wp_enqueue_style( 'editor-style-2' );
20-
2122
}
22-
add_action( 'elementor/editor/before_enqueue_styles', 'my_plugin_editor_styles' );
23+
add_action( 'elementor/editor/before_enqueue_styles', 'my_plugin_enqueue_editor_styles' );
2324
```
2425

2526
Now we'll register and enqueue custom stylesheets **after** Elementor styles are registered and enqueued:
2627

27-
```php {11}
28-
function my_plugin_editor_styles() {
29-
28+
```php {6,12}
29+
function my_plugin_register_editor_styles() {
3030
wp_register_style( 'editor-style-1', plugins_url( 'assets/css/editor-style-1.css', __FILE__ ) );
3131
wp_register_style( 'editor-style-2', plugins_url( 'assets/css/editor-style-2.css', __FILE__ ), [ 'external-framework' ] );
3232
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
33+
}
34+
add_action( 'elementor/editor/after_register_styles', 'my_plugin_register_editor_styles' );
3335

36+
function my_plugin_enqueue_editor_styles() {
3437
wp_enqueue_style( 'editor-style-1' );
3538
wp_enqueue_style( 'editor-style-2' );
36-
3739
}
38-
add_action( 'elementor/editor/after_enqueue_styles', 'my_plugin_editor_styles' );
40+
add_action( 'elementor/editor/after_enqueue_styles', 'my_plugin_enqueue_editor_styles' );
3941
```

src/scripts-styles/frontend-scripts.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,42 @@
22

33
<Badge type="tip" vertical="top" text="Elementor Core" /> <Badge type="warning" vertical="top" text="Intermediate" />
44

5-
Some addons have custom frontend scripts loaded to the client side on pages built with Elementor. In these cases, use `elementor/frontend/before_register_scripts` or `elementor/frontend/after_register_scripts` action hooks, which are fired when Elementor frontend scripts are registered and enqueued.
5+
Some addons have custom frontend scripts loaded on pages built with Elementor. Use `elementor/frontend/before_enqueue_scripts` or `elementor/frontend/after_enqueue_scripts` action hooks, which are fired when Elementor frontend scripts are registered and enqueued.
66

77
## Registering Frontend Scripts
88

99
In the example below, we'll register and enqueue custom scripts **before** Elementor frontend scripts are registered and enqueued:
1010

11-
```php {11}
12-
function my_plugin_frontend_scripts() {
13-
11+
```php {6,12}
12+
function my_plugin_register_frontend_scripts() {
1413
wp_register_script( 'frontend-script-1', plugins_url( 'assets/js/frontend-script-1.js', __FILE__ ) );
1514
wp_register_script( 'frontend-script-2', plugins_url( 'assets/js/frontend-script-2.js', __FILE__ ), [ 'external-library' ] );
1615
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
16+
}
17+
add_action( 'elementor/frontend/before_register_scripts', 'my_plugin_register_frontend_scripts' );
1718

19+
function my_plugin_enqueue_frontend_scripts() {
1820
wp_enqueue_script( 'frontend-script-1' );
1921
wp_enqueue_script( 'frontend-script-2' );
20-
2122
}
22-
add_action( 'elementor/frontend/before_register_scripts', 'my_plugin_frontend_scripts' );
23+
add_action( 'elementor/frontend/before_enqueue_scripts', 'my_plugin_enqueue_frontend_scripts' );
2324
```
2425

2526
Now we'll register and enqueue custom scripts **after** Elementor frontend scripts are registered and enqueued:
2627

27-
```php {11}
28-
function my_plugin_frontend_scripts() {
29-
28+
```php {6,12}
29+
function my_plugin_register_frontend_scripts() {
3030
wp_register_script( 'frontend-script-1', plugins_url( 'assets/js/frontend-script-1.js', __FILE__ ) );
3131
wp_register_script( 'frontend-script-2', plugins_url( 'assets/js/frontend-script-2.js', __FILE__ ), [ 'external-library' ] );
3232
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
33+
}
34+
add_action( 'elementor/frontend/after_register_scripts', 'my_plugin_register_frontend_scripts' );
3335

36+
function my_plugin_enqueue_frontend_scripts() {
3437
wp_enqueue_script( 'frontend-script-1' );
3538
wp_enqueue_script( 'frontend-script-2' );
36-
3739
}
38-
add_action( 'elementor/frontend/after_register_scripts', 'my_plugin_frontend_scripts' );
40+
add_action( 'elementor/frontend/after_enqueue_scripts', 'my_plugin_enqueue_frontend_scripts' );
3941
```
4042

4143
::: warning Please Note

src/scripts-styles/frontend-styles.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,36 @@ When using custom stylesheets, they must be registered to all pages using Elemen
88

99
In the example below, we'll register and enqueue custom stylesheets **before** Elementor frontend styles are registered and enqueued:
1010

11-
```php {11}
12-
function my_plugin_frontend_stylesheets() {
13-
11+
```php {6,12}
12+
function my_plugin_register_frontend_styles() {
1413
wp_register_style( 'frontend-style-1', plugins_url( 'assets/css/frontend-style-1.css', __FILE__ ) );
1514
wp_register_style( 'frontend-style-2', plugins_url( 'assets/css/frontend-style-2.css', __FILE__ ), [ 'external-framework' ] );
1615
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
16+
}
17+
add_action( 'elementor/frontend/before_register_styles', 'my_plugin_register_frontend_styles' );
1718

19+
function my_plugin_enqueue_frontend_styles() {
1820
wp_enqueue_style( 'frontend-style-1' );
1921
wp_enqueue_style( 'frontend-style-2' );
20-
2122
}
22-
add_action( 'elementor/frontend/before_enqueue_styles', 'my_plugin_frontend_stylesheets' );
23+
add_action( 'elementor/frontend/before_enqueue_styles', 'my_plugin_enqueue_frontend_styles' );
2324
```
2425

2526
Now we'll register and enqueue custom stylesheets **after** Elementor frontend styles are registered and enqueued:
2627

27-
```php {11}
28-
function my_plugin_frontend_stylesheets() {
29-
28+
```php {6,12}
29+
function my_plugin_register_frontend_stylesheets() {
3030
wp_register_style( 'frontend-style-1', plugins_url( 'assets/css/frontend-style-1.css', __FILE__ ) );
3131
wp_register_style( 'frontend-style-2', plugins_url( 'assets/css/frontend-style-2.css', __FILE__ ), [ 'external-framework' ] );
3232
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
33+
}
34+
add_action( 'elementor/frontend/after_register_styles', 'my_plugin_register_frontend_stylesheets' );
3335

36+
function my_plugin_enqueue_frontend_stylesheets() {
3437
wp_enqueue_style( 'frontend-style-1' );
3538
wp_enqueue_style( 'frontend-style-2' );
36-
3739
}
38-
add_action( 'elementor/frontend/after_enqueue_styles', 'my_plugin_frontend_stylesheets' );
40+
add_action( 'elementor/frontend/after_enqueue_styles', 'my_plugin_enqueue_frontend_stylesheets' );
3941
```
4042

4143
::: warning Please Note

src/scripts-styles/preview-scripts.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@ When you develop addons that extend [Elementor preview](./../editor/elementor-pr
88

99
In the example below, we'll register and enqueue custom scripts after Elementor scripts are registered and enqueued:
1010

11-
```php {11}
12-
function my_plugin_preview_scripts() {
13-
11+
```php {6,12}
12+
function my_plugin_register_preview_scripts() {
1413
wp_register_script( 'preview-script-1', plugins_url( 'assets/js/preview-script-1.js', __FILE__ ) );
1514
wp_register_script( 'preview-script-2', plugins_url( 'assets/js/preview-script-2.js', __FILE__ ), [ 'external-library' ] );
1615
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
16+
}
17+
add_action( 'wp_enqueue_scripts', 'my_plugin_register_preview_scripts' );
1718

19+
function my_plugin_enqueue_preview_scripts() {
1820
wp_enqueue_script( 'preview-script-1' );
1921
wp_enqueue_script( 'preview-script-2' );
20-
2122
}
22-
add_action( 'elementor/preview/enqueue_scripts', 'my_plugin_preview_scripts' );
23+
add_action( 'elementor/preview/enqueue_scripts', 'my_plugin_enqueue_preview_scripts' );
2324
```

src/scripts-styles/preview-styles.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@ When you develop addons that extend [Elementor preview](./../editor/elementor-pr
88

99
In the example below, we'll register and enqueue custom stylesheets after Elementor preview styles are registered and enqueued:
1010

11-
```php {11}
12-
function my_plugin_preview_styles() {
13-
11+
```php {6,12}
12+
function my_plugin_register_preview_styles() {
1413
wp_register_style( 'preview-style-1', plugins_url( 'assets/css/preview-style-1.css', __FILE__ ) );
1514
wp_register_style( 'preview-style-2', plugins_url( 'assets/css/preview-style-2.css', __FILE__ ), [ 'external-framework' ] );
1615
wp_register_style( 'external-framework', plugins_url( 'assets/css/libs/external-framework.css', __FILE__ ) );
16+
}
17+
add_action( 'wp_enqueue_scripts', 'my_plugin_register_preview_styles' );
1718

19+
function my_plugin_enqueue_preview_styles() {
1820
wp_enqueue_style( 'preview-style-1' );
1921
wp_enqueue_style( 'preview-style-2' );
20-
2122
}
22-
add_action( 'elementor/preview/enqueue_styles', 'my_plugin_preview_styles' );
23+
add_action( 'elementor/preview/enqueue_styles', 'my_plugin_enqueue_preview_styles' );
2324
```

src/scripts-styles/widget-scripts.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ When you develop new [Elementor widgets](./../widgets/) and need to [register cu
88

99
In the example below, we'll register the required scripts in the main file:
1010

11-
```php
12-
function register_widget_scripts() {
11+
```php {6}
12+
function my_plugin_register_widget_scripts() {
1313
wp_register_script( 'widget-script-1', plugins_url( 'assets/js/widget-script-1.js', __FILE__ ) );
1414
wp_register_script( 'widget-script-2', plugins_url( 'assets/js/widget-script-2.js', __FILE__ ), [ 'external-library' ] );
1515
wp_register_script( 'external-library', plugins_url( 'assets/js/libs/external-library.js', __FILE__ ) );
1616
}
17-
add_action( 'wp_enqueue_scripts', 'register_widget_scripts' );
17+
add_action( 'wp_enqueue_scripts', 'my_plugin_register_widget_scripts' );
1818
```
1919

2020
Then, the widget class will set the JS dependencies:
2121

22-
```php
22+
```php {3}
2323
class Elementor_Test_Widget extends \Elementor\Widget_Base {
2424

2525
public function get_script_depends(): array {

0 commit comments

Comments
 (0)