Skip to content

Commit

Permalink
Add search results context block (#671)
Browse files Browse the repository at this point in the history
* Add Search Results context block

Initially built for DevHub, now required for Make Handbooks

* Fix block registration path
  • Loading branch information
adamwoodnz authored Nov 20, 2024
1 parent 94f19f2 commit 718e2ce
Show file tree
Hide file tree
Showing 4 changed files with 144 additions and 0 deletions.
80 changes: 80 additions & 0 deletions mu-plugins/blocks/search-results-context/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?php
/**
* Block Name: Search Results Context
* Description: Displays context information for search results.
*
* @package wporg
*/

namespace WordPressdotorg\MU_Plugins\Search_Results_Context;

add_action( 'init', __NAMESPACE__ . '\init' );

/**
* Render the block content.
*
* @return string Returns the block markup.
*/
function render( $attributes ) {
global $wp_query;

if ( ! is_search() ) {
return '';
}

$results_count = $wp_query->found_posts;

if ( 0 === $results_count ) {
return;
}

$posts_per_page = get_query_var( 'posts_per_page' );
$current_page = get_query_var( 'paged' ) ?: 1;
$first_result = ( $current_page - 1 ) * $posts_per_page + 1;
$last_result = min( $current_page * $posts_per_page, $results_count );

$content = sprintf(
/* translators: %1$s number of results; %2$s keyword. */
_n(
'%1$s result found for "%2$s".',
'%1$s results found for "%2$s".',
$results_count,
'wporg'
),
number_format_i18n( $results_count ),
esc_html( $wp_query->query['s'] ),
);

$showing = sprintf(
/* translators: %1$s number of first displayed result, %2$s number of last displayed result. */
'Showing results %1$s to %2$s.',
number_format_i18n( $first_result ),
number_format_i18n( $last_result ),
);

$wrapper_attributes = get_block_wrapper_attributes();

return sprintf(
'<%1$s %2$s>%3$s %4$s</%1$s>',
esc_attr( $attributes['tagName'] ),
$wrapper_attributes,
$content,
$showing,
);
}

/**
* Registers the block using the metadata loaded from the `block.json` file.
* Behind the scenes, it registers also all assets so they can be enqueued
* through the block editor in the corresponding context.
*
* @see https://developer.wordpress.org/reference/functions/register_block_type/
*/
function init() {
register_block_type(
__DIR__ . '/build',
array(
'render_callback' => __NAMESPACE__ . '\render',
)
);
}
44 changes: 44 additions & 0 deletions mu-plugins/blocks/search-results-context/src/block.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "wporg/search-results-context",
"version": "0.1.0",
"title": "Search Results Context",
"category": "design",
"icon": "",
"description": "Displays context information for search results.",
"textdomain": "wporg",
"attributes": {
"tagName": {
"type": "string",
"default": "p"
}
},
"supports": {
"align": true,
"color": true,
"html": false,
"spacing": {
"margin": true,
"padding": true,
"blockGap": false
},
"typography": {
"fontSize": true,
"lineHeight": true,
"__experimentalFontFamily": true,
"__experimentalFontStyle": true,
"__experimentalFontWeight": true,
"__experimentalLetterSpacing": true,
"__experimentalTextTransform": true,
"__experimentalTextDecoration": true,
"__experimentalDefaultControls": {
"fontSize": true,
"fontAppearance": true,
"textTransform": true
}
}
},
"editorScript": "file:./index.js",
"viewScript": "file:./index.js"
}
19 changes: 19 additions & 0 deletions mu-plugins/blocks/search-results-context/src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**
* WordPress dependencies
*/
import { registerBlockType } from '@wordpress/blocks';
import { useBlockProps } from '@wordpress/block-editor';

/**
* Internal dependencies
*/
import metadata from './block.json';

function Edit() {
return <div { ...useBlockProps() }>Search Results Context</div>;
}

registerBlockType( metadata.name, {
edit: Edit,
save: () => null,
} );
1 change: 1 addition & 0 deletions mu-plugins/loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
require_once __DIR__ . '/blocks/sidebar-container/index.php';
require_once __DIR__ . '/blocks/screenshot-preview/block.php';
require_once __DIR__ . '/blocks/screenshot-preview-block/block.php';
require_once __DIR__ . '/blocks/search-results-context/index.php';
require_once __DIR__ . '/blocks/site-breadcrumbs/index.php';
require_once __DIR__ . '/blocks/table-of-contents/index.php';
require_once __DIR__ . '/blocks/time/index.php';
Expand Down

0 comments on commit 718e2ce

Please sign in to comment.