Eu trabalhei uma solução. Pode haver uma maneira mais elegante de conseguir isso, mas tive dificuldade em fazer qualquer outra coisa funcionar.
Eu coloquei o seguinte código no início do arquivo header.php para todas as páginas. O objetivo é afunilar os visitantes do site por meio de uma página de registro de eventos, antes de acessar o conteúdo do site:
$currentURL = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if ( $currentURL == 'http://mydomain.com/website-registration/' ) :
elseif ( $currentURL != 'http://mydomain.com/thank-you/' ) :
if ( ! isset( $_COOKIE["tcpa_newvisitor"] ) ) :
header( "Location: http://mydomain.com/website-registration/" );
endif;
else :
if ( ! isset( $_COOKIE['tcpa_newvisitor'] ) ) :
setcookie( 'tcpa_newvisitor', 1, time() + 3600 * 24 * 100, COOKIEPATH, COOKIE_DOMAIN, false);
header( "refresh:1;url=http://mydomain.com" );
endif;
endif;
O código coleta a página atual em $ currentURL. Se a página atual é a página de registro do site de destino, nada acontece. Se o URI não for a página de agradecimento e o cookie ainda não tiver sido definido, o navegador redirecionará para a página de registro. Quando o formulário na página de registro foi enviado, o usuário é direcionado para a página de agradecimento onde o cookie está definido. Finalmente, após 1 segundo, a página de agradecimento é atualizada, redirecionando para a página inicial. O visitante pode agora ver o site como normal.