There are multiple ways to go about this, but one way I would consider if I were you would be to do it like this. On the index.php
or whatever page the posts appear on do the following three times each with different categories:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$arguments = array(
'category_name' => 'category'
'posts_per_page' => 3,
'paged' => $paged
);
$wp_query->query($arguments);
if (have_posts()) :
while (have_posts()) : the_post();
the_content();
endwhile;
endif;
The category_name
can be a comma delimited string that should allow you to have three or more categories.
The paged
parameter is needed when setting the posts per page this way. If that isn’t done, then the posts don’t show up correctly on the subsequent post pages.
The WP_Query reference, shows all the filters that can used in the query. It also offers up an alternative way of using the query.