Het Gutenberg Query Loop block is krachtig voor het tonen van pagina's en berichten in een mooi format. Maar helaas zijn de instellingen beperkt. Zo wilde ik op een simpele manier in een paginatemplate een overzicht te tonen van de subpagina's,.
Daarvoor zijn er meerdere mogelijkheden, maar deze is wel het simpelste. Het Query Loop block geeft onder Filters de mogelijkheid om op Keyword te zoeken. Daar plaats ik de herkenbare trigger '[child-pages]'. Door in mijn plugin of thema gebruik te maken van de action hook 'pre_get_posts' worden alle queries gechecked op deze trigger. En daarna wordt de query aangepast naar wens. Deze oplossing werkt zowel frontend als backend in de Gutenberg editor.
Eigenlijk zijn de mogelijkheden oneindig, door gebruik van andere triggerwoorden die de query kunnen aanpassen..
/**
* To show child pages in the Query Loop block, select 'Pages'
* or any other hierarchical custom post type
* and add '[child_pages]' to Filters -> Keyword.
*
* @param array $query The query provided by the pre_get_posts action hook.
*
* @return void
*/
function fwp_child_pages( $query ) {
if ( ! $query->is_main_query() && '[child_pages]' === $query->get( 's' ) ) {
$query->set( 's', '' ); // removes the search keyword.
global $post;
if ( $post && is_post_type_hierarchical( $post->post_type ) ) {
$query->set( 'post_parent', $post->ID ); // adds current post ID to the query.
}
}
}
add_action( 'pre_get_posts', 'fwp_child_pages' );