定制 yard/query-block 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yard/query-block

Composer 安装命令:

composer require yard/query-block

包简介

A query block for the Gutenberg editor.

README 文档

README

Code Style PHPStan Tests Code Coverage Badge Lines of Code Badge

An acorn package providing a "Query Block" for the Gutenberg editor.

Requirements

Installation

  1. Install this package with Composer:

    composer require yard/query-block
  2. 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.

ACF Post Object Field

It is possible to add a connection filter to the block settings that lets you filter the available posts based on connected posts. This only works for the ACF "Post Object" field.

Important: For this to work, the Post Object field setting "Select Multiple" must be disabled.

All you need to do is publish config/yard-query-block.php and register all connections in the connections array. For example:

return [
	'connections' => [
		[
			'from' => 'news',
			'to' => 'project',
			'meta_key' => 'news_related_project',
		],
	],
];

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);

About us

banner

统计信息

  • 总下载量: 3.07k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 2
  • Forks: 0
  • 开发语言: JavaScript

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-03

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固