You can use the_content
filter, to literally filter the content into your structure.
Somthing like this
<?php
add_filter('the_content',function($the_content){
// find blockquotes
$regex = '/<blockquote>(.+?)<\/blockquote>([\n|$])/i';
$blockquotes = preg_match_all($regex,$the_content,$matches);
// remove blockquotes
$main_content = preg_replace($regex,'',$the_content);
// rebuild blockqoutes
$my_blockquotes="";
foreach ($matches[1] as $blockquote) {
$my_blockquotes .= "<blockquote>{$blockquote}</blockquote>";
}
// rebuild content
$new_content="";
if (!empty($my_blockquotes)) {
$new_content = "
<div class="my-blockquotes">
{$my_blockquotes}
</div>\n";
}
$new_content .= "
<div class="main-content">
{$main_content}
</div>\n";
return $new_content;
});
but you’ll notice this still might feel a little hacky as you’re separating user-supplied content where unexpected user error can still happen. For example: line-breaks may be inconsistent between blockquotes.
You’d be better off creating a custom metabox and/or using post_meta to store these blockquotes individually, as meta data to the post. You can then throw them in before your content (with out parsing with regex) via the_content
still, or you can edit your template files of your theme, or hook into another action in your theme.