Changer l’ID de la grille concernée en seconde ligne uniquement : remplacer 2 dans l’exemple ci-dessous.
Il suffit donc de créer une grille en ne filtrant pas par catégorie, l’insérer dans la template, puis ajouter le code ci-dessous dans le function.php du theme enfant
function grid_related_posts_category( array $query_args, int $grid_id ) {
if ( $grid_id === 2 ) {
if ( function_exists( 'yoast_get_primary_term_id' ) ) {
$category = yoast_get_primary_term_id( 'category', get_the_ID() );
} else {
$category = wp_get_post_categories( get_the_ID(), [ 'number' => 1 ] );
}
$query_args = array_merge($query_args, [
'post__not_in' => [ get_the_ID() ],
'tax_query' => [
[
'taxonomy' => 'category',
'terms' => $category,
],
],
]);
}
return $query_args;
}
add_filter( 'wp_grid_builder/grid/query_args', 'grid_related_posts_category', 10, 2 );