サイト作成に欠かせないのがコンタクトフォーム。
結構要望の多い完了画面ですが、残念ながら cf7 には「完了画面」がありません。
出来るだけ簡単にしたかったので、少々強引ですが「固定ページなし、ページ移動なし、フォームをにタグを追加するだけで css で完結する」という完了画面を作りました。
長い説明になっていますが、要は cf7 の css を解除して、ほぼ css をいじっているだけです^^;;
元々cf7を使用していましたが、最近はクライアントの要望に合わせMV WP Formを使って色々カスタマイズ。でも、mw開発終了> <
という事で当サイトでは contactFoam7 をカスタマイズしていく予定です^^;
contactFoam7 フォームの準備
1. cf7の「css 解除」&「js 読み込み変更」
余計な設定の多いプラグインのcss。
オーバーライドも確認が面倒だし、フォームだけなら大した設定も必要ないので潔く削除してしまいます。
(最後に当サイトのformページ用cssを載せています。ご参考までに^^)
併せて、jsもコンタクトページだけに読み込ませるように変更しておきます。( 任意 )
js の読み込み変更をしないのであれば、一行目だけでもOK^^
以下を functions.phpに記述します。
add_filter( 'wpcf7_load_css', '__return_false' ); //cf7のcssを削除
add_filter( 'wpcf7_load_js', '__return_false' );  //cf7のスクリプトを一旦削除
function load_wpcf7() {
  if( is_page('contact')){  //コンタクトページだけに cf7 のスクリプトを読み込ませる
    wpcf7_enqueue_scripts(); 
  }
}
add_action('wp_enqueue_scripts', 'load_wpcf7');2. フォーム要素を<div></div>で囲む
[submit "送信"] は装飾が変わるので  <div> に class を当てておきます。
<div><label for="type">お問い合わせ項目</label>[checkbox* type id:y-type "相談・質問・要望" "案件の依頼・問い合わせ" "その他"]</div>
<div><label for="name">お名前</label>[text* name id:y-name]</div>
<div><label for="email">メールアドレス</label>[email* email autocomplete:email id:y-email]</div>
<div><label for="msg">お問い合わせ内容</label>[textarea* message id:msg]</div>
<div class="btn">[submit "送信"]</div>フォームの改造はこれだけ^^;
3. メッセージをちょっと変更
メッセージタブの一番上が「完了メッセージ」になります。

カスタマイズ後は、これが1行目になりますので「お問い合わせありがとうございます。」などに変更しておきます。
contactFoam7 cssで完了画面を作成
cf7のメッセージ部分は <div class="wpcf7-response-output">メッセージ</div> 。
送信ボタンが押されると <form> タグの class が変化しますので、それぞれにスタイルを当てていきます。
送信前 / int
/* 送信前 <form action="…" method="post" class="wpcf7-form int" … > */
form.int .wpcf7-response-output {
  display: none;
}送信エラー時 / invalid
/* 送信エラー <form action="…" method="post" class="wpcf7-form invalid" … > */
form.invalid .wpcf7-response-output {
  margin-top: 3vh;
  padding: 10px;
  font-weight:  500;
  line-height: 1.4;
  color: #fff;
  background-color: #DF0029;
}エラーメッセージが分かりづらいので、目立つようにスタイルを当てています。

送信完了時 / sent
隠したい部分の親にposition: relative;
まず、隠したい部分( the_content()だけでも、上に記述があるならそれを含めてもOK ) の親になるboxに position: relative; をかけておきます。
当サイトは以下のコードなので、タイトルを残し、親となる article にかけています。
<main class="inner page-main">
  <h1><?php the_title(); ?></h1>
  <article>
    <?php while(have_posts()){ the_post(); ?>
    <section class="contents">
      <?php the_content(); ?>
    </section>
    <?php } ?>
  </article>
</main>article {
  position: relative;
}不要部分を隠し、メッセージを見せる
/* 必要のないdivやセレクタを隠す----------------------- */
form.sent div:not(.wpcf7-response-output){
  display: none;
}
/* メッセージを全体に被せ、もろもろ設定------------------ */
form.sent .wpcf7-response-output {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%; 
  height: 100%;
  padding: 10vh 3vw;
  font-size: 1.8rem;
  background-color: #fff;
}
/* ::afterでメッセージを追加-------------------------- */
form.sent .wpcf7-response-output::after {
  content: "数日以内にメールにてご回答致します。\A少々お待ちください。";
  display: block;
  white-space: pre;
  margin-top: 5vh;
}これで出来上がり^^
ページ移動なしの完了画面です。

[おまけ] 当サイトの form.css (cf7バージョン)
レスポンシブは載せていません m(__)m
/*  form base 
 * -----------------------------------------------  */
input:where([type="text"],[type="email"],[type="submit"]), 
textarea, select, option, optgroup, button {
  appearance: none;
  outline: none;
  font-family: inherit; 
  font-size: inherit;
  line-height: inherit;
  color: inherit;
  
  display: block;
  width: 100%;
  padding: 10px;
  border: solid 1px #ddd;
  border-radius: 5px;
}
/*  cf7 
 * -----------------------------------------------  */
.wpcf7-form {
  width: 100%;
  max-width: 900px;
  margin: 7vh auto 0;
}
.wpcf7-form span { 
  display: inline-block;
}
.wpcf7-form div:not(.btn, .wpcf7-response-output) {
  display: flex;
  align-items: center; 
  column-gap: 15px;
  margin-bottom: 15px;
}
.wpcf7-form div label {
  flex: 0 0 11em;
  display: block;
  line-height: 1.4;
}
.wpcf7-form div label::after {
  content: "(必須)";
  display: inline-block;
  font-size: 1.4rem;
  color: #e00;
}
.wpcf7-form div:not(.btn) > span {
  flex: 0 1 100%;
}
/*  checkbox -------------------------  */
.wpcf7-list-item {
  margin: 5px 10px 5px 0;
}
.wpcf7-list-item input {
  display: inline-block;
  margin-right: 5px;
}
/*  text, textarea -------------------  */
textarea {
  height: 10em;
}
/*  ボタン ----------------------------  */
.wpcf7-form {
  text-align: center;
}
.wpcf7-form input[type="submit"] {
  display: inline-block;
  width: 100%;
  max-width: 300px;
  margin: 5vh auto 15px;
  font-weight: 500;
  line-height: 2;
  text-align: center;
  color: #fff;
  background-color: #333;
  cursor: pointer;
}
.form-policy {
  font-size: 1.4rem;
  text-align: center;
}
/*  screen-reader -------------------  */
.screen-reader-response {
  display: none;
}
/*  エラーメッセージ -------------------  */
.wpcf7-not-valid-tip {
  width: 100%;
  color: #DF0029;
}
/*  送信後メッセージ -------------------  */
form.int .wpcf7-response-output {
  display: none;
}
form.invalid .wpcf7-response-output {
  margin-top: 3vh;
  padding: 10px;
  font-weight:  500;
  line-height: 1.4;
  color: #fff;
  background-color: #DF0029;
}
form.sent div:not(.wpcf7-response-output){
  display: none;
}
form.sent .wpcf7-response-output {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%; 
  height: 100%;
  padding-top: 10vh;
  font-size: 1.8rem;
  background-color: #fff;
}
form.sent .wpcf7-response-output::after {
  content: "数日以内にメールにてご回答致します。\A少々お待ちください。";
  display: block;
  white-space: pre;
  margin-top: 5vh;
}