ここでは一覧用の固定ページはpage-list.php
<form action="/list/" method="get">
<!-- valueはキーワードがあるかどうかの判定 -->
<input name="keyword" value="<?php echo isset($_GET['keyword']))? esc_html($_GET['keyword']) : ''; ?>">
</form>
page-list.php
<?php
$args = array(
'post_type' => array('hoge','foo'),
'posts_per_page' => -1,
);
// キーワードがあるかどうか
if(isset($_GET['keyword'])) $args['s'] = esc_html($_GET['keyword']);
$the_query = new WP_Query( $args );
// ループ
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
// 何かする
endwhile;
endif;
// 投稿データをリセット
wp_reset_postdata();
?>
たぶんこういうイメージかな。。