例: カスタム投稿タイプの検索ブロック バリエーション
デフォルトでは、検索ブロックはquery
属性をオブジェクトとして渡すことができます。これは、検索結果を絞り込んで、カスタム投稿タイプまたは分類法の結果のみを返す場合に役立ちます。
Podcast の投稿タイプがあり、Podcast のランディング ページで検索フォームを使用できるようにしたいとします。その検索で Podcast 投稿タイプの結果のみが返されるようにします。
wp.blocks.registerBlockVariation('core/search', {
name: 'core/search',
title: 'News Search',
icon: 'search',
scope: ['inserter'],
attributes: {
query: {
post_type: 'news'
}
}
});
How to Use Block Variations in WordPress
https://richtabor.com/block-variations/
https://developer.wordpress.org/block-editor/reference-guides/block-api/block-registration/#example-optional
wp.blocks.registerBlockVariation(
'core/cover',
{
isDefault: true,
attributes: {
align: 'full'
},
}
);
https://ulrich.digital/block-variations/
関連するmemo
search_columns
検索クエリで検索するフィールドを制御する引数の導入
以前は、s
メソッドの引数は、、およびフィールドWP_Query::parse_query()
を検索していましたが、フィルタを使用して手動で SQL を調整する以外にこれを制御する方法はありませんでした。post_title
post_excerpt
post_content
posts_search
WordPress 6.2 では、引数を使用して、クエリを実行するときに検索するフィールドを指定する機能が追加されましたsearch_columns
。
現時点では、デフォルトのpost_title
,post_excerpt
およびpost_content
列のみが許可されていますが、WordPress の今後のリリースで拡張される可能性があります。
引数のデフォルト値は search_columns
次のとおりです array( 'post_title', 'post_excerpt', 'post_content' )
。
以下の例では、 抜粋(列)foo
に含まれる投稿を検索し、列を除外します。
<?php
$my_query = new WP_Query(
array(
's' => 'foo',
'post_type' => 'post',
'search_columns' => array( 'post_excerpt' ),
)
);
詳細については、チケット#43867を参照してください。