yard / query-block
A query block for the Gutenberg editor.
Installs: 15
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 5
Language:JavaScript
Type:package
pkg:composer/yard/query-block
Requires
- php: ^8.1
- illuminate/auth: ^10.48
- jgrossi/corcel: ^7.0
- spatie/laravel-package-tools: ^1.16
- webmozart/assert: ^1.11
- yard/data: ^1.0
Requires (Dev)
- larastan/larastan: ^2.0
- orchestra/testbench: ^8.23
- pestphp/pest: ^2.34
- szepeviktor/phpstan-wordpress: ^1.0
- yard/php-cs-fixer-rules: ^1.0
README
An acorn package providing a "Query Block" for the Gutenberg editor.
Requirements
Installation
-
Install this package with Composer:
composer require yard/query-block
-
Run the Acorn WP-CLI command to discover this package:
wp acorn package:discover
Usage
When this package is installed, you can insert the “Berichtenlijst” block in the Gutenberg editor. This block lists a series of posts based on different filter settings in the admin.
Templates
Override Default Template
A default template is included in the package. You can publish the template to your project with:
wp acorn vendor:publish --provider="Yard\QueryBlock\QueryBlockServiceProvider"
This will copy the view default.php from this package into your project at /sage/resources/views/vendor/yard-query-block/templates/default.blade.php. You can now modify the default template as desired.
Create Aditional Templates
You can create additional templates by placing a template file in the same directory. For example:
/sage/resources/views/vendor/yard-query-block/templates/horizontal.blade.php
Add the template name as a comment at the top of this template file like this:
@php /** * Template: Horizontal * * @var Illuminate\Support\Collection|Yard\Data\PostData $postDataCollection * @var Yard\QueryBlock\Block\BlockAttributes $attributes */ @endphp
Now, you will be able to select the template from the editor. The name of the template is displayed using the value in your docblock.
Hooks
JavaScript filters
yard.query-inspector-config
Customize which controls are displayed in the block's inspector panel.
import { addFilter } from '@wordpress/hooks'; addFilter( 'yard.query-inspector-config', 'yard.query-inspector-config', ( config, attributes ) => { return { ...config, showPostTypeSelectControl: false, showNumberOfPostsRangeControl: false, }; } );
yard.query-exclude-post-types
Exclude specific post types from the list of available post types.
import { addFilter } from '@wordpress/hooks'; addFilter( 'yard.query-exclude-post-types', 'yard.query-exclude-post-types', ( excludedPostTypes ) => { return [ ...excludedPostTypes, 'healthcare-provider', 'location', 'page', ]; } );
yard.query-exclude-taxonomies
Exclude specific taxonomies from the list of available taxonomies.
import { addFilter } from '@wordpress/hooks'; addFilter( 'yard.query-exclude-taxonomies', 'yard.query-exclude-taxonomies', ( excludedTaxonomies ) => { return [ 'category', 'post_tag' ]; } );
yard.query-min-number-of-posts and yard.query-max-number-of-posts
Customize the minimum and maximum value for the posts per page range.
import { addFilter } from '@wordpress/hooks'; addFilter( 'yard.query-max-number-of-posts', 'yard.query-max-number-of-posts', (defaultMax, attributes) => { const postTypeValues = attributes.postTypes?.map((type) => type.value) || []; if (postTypeValues.includes('news')) { return 5; } if (postTypeValues.includes('healthcare-provider')) { return 2; } return defaultMax; } );
yard.query-post-type-select-control-is-multi
Change the post type select control from multi to single select.
import { addFilter } from '@wordpress/hooks'; addFilter( 'yard.query-post-type-select-control-is-multi', 'yard.query-post-type-select-control-is-multi', () => false );
PHP filters
yard_query_block_post_query
Filters the Post Query before it is executed on the database.
| Parameters | Type | Description |
|---|---|---|
| $query | \Corcel\Model\Builder\PostBuilder | The query object |
| $attributes | \Yard\QueryBlock\Block\BlockAttributes | The block attributes |
| Return | Type | Description |
|---|---|---|
| $query | \Corcel\Model\Builder\PostBuilder | The query object |
Example:
add_filter('yard_query_block_post_query', function ($query, $attributes) { if (is_user_logged_in()) { return $query; } return $query->hasMeta('post_is_public', 'yes'); }, 10, 2);