diff --git a/docs/usage/wordpress.md b/docs/usage/wordpress.md index 28684d3..343fe5e 100644 --- a/docs/usage/wordpress.md +++ b/docs/usage/wordpress.md @@ -519,3 +519,17 @@ This is a directive version of [`wp_body_open`](https://developer.wordpress.org/ @postclass('bg-white') @postclass('bg-white', $post->ID) ``` + +## @sidebar + +`@sidebar` is a simply directive that calls [`dynamic_sidebar`](https://developer.wordpress.org/reference/functions/dynamic_sidebar/). + +It comes with two assisting directives `@hassidebar` and `@endhassidebar` that checks for the existence of the sidebar using [`is_active_sidebar`](https://developer.wordpress.org/reference/functions/is_active_sidebar/). + +```php +@sidebar('sidebar-primary') + +@hassidebar('sidebar-primary') + @sidebar('sidebar-primary') +@endhassidebar +``` diff --git a/src/Directives/WordPress.php b/src/Directives/WordPress.php index fac24aa..cd451e5 100644 --- a/src/Directives/WordPress.php +++ b/src/Directives/WordPress.php @@ -582,6 +582,24 @@ return ""; }, + /* + |--------------------------------------------------------------------- + | @sidebar / @hassidebar / @endhassidebar + |--------------------------------------------------------------------- + */ + + 'sidebar' => function ($expression) { + return ""; + }, + + 'hassidebar' => function ($expression) { + return ""; + }, + + 'endhassidebar' => function () { + return ''; + }, + /* |--------------------------------------------------------------------- | @__ diff --git a/tests/Unit/WordPressTest.php b/tests/Unit/WordPressTest.php index c176943..4830256 100644 --- a/tests/Unit/WordPressTest.php +++ b/tests/Unit/WordPressTest.php @@ -764,6 +764,36 @@ }); }); +describe('@sidebar', function () { + it('compiles correctly', function () { + $directive = "@sidebar('sidebar-1')"; + + $compiled = $this->compile($directive); + + expect($compiled)->toBe(""); + }); +}); + +describe('@hassidebar', function () { + it('compiles correctly', function () { + $directive = "@hassidebar('sidebar-1')"; + + $compiled = $this->compile($directive); + + expect($compiled)->toBe(""); + }); +}); + +describe('@endhassidebar', function () { + it('compiles correctly', function () { + $directive = '@endhassidebar'; + + $compiled = $this->compile($directive); + + expect($compiled)->toBe(''); + }); +}); + describe('@__', function () { it('compiles correctly', function () { $directive = "@__('Hello World', 'sage')";