Coloca um cookie quando uma página específica é visualizada?

4

Estou tentando direcionar novos visitantes do site para uma página de registro personalizada somente para a primeira visita deles . O registro coleta informações detalhadas relativas a um evento futuro, é não projetado para registrar o visitante como usuário da instalação do WordPress.

A página de registro contém um formulário Gravity que, quando enviado, redireciona para uma página de agradecimento.

Eu gostaria de saber a maneira correta de colocar um cookie no WordPress somente quando o visitante chegar na página de agradecimento .

Obrigado antecipadamente.

NB:

Devo dizer também que adicionei o seguinte ao arquivo functions.php:

/* SET NEW USER COOKIE */
function set_newuser_cookie() {
    if (!isset($_COOKIE['newtcpa_visitor'])) {
        setcookie('newtcpa_visitor', 1, time()+3600*24*100, COOKIEPATH, COOKIE_DOMAIN, false);
    }
}
add_action( 'init', 'set_newuser_cookie');

Não tenho certeza sobre o COOKIEPATH & COOKIE_DOMAIN. Eu tentei as configurações a seguir, mas não estou tendo muita sorte em isolar o modelo / página do WP:

setcookie('newtcpa_visitor', 1, time()+3600*24*100, '/', '.mydomain.com', false);

e

setcookie('newtcpa_visitor', 1, time()+3600*24*100, '/', '.mydomain.com/thank-you/', false);

Pedimos desculpas pelas várias edições ... primeiro post no WordPress Answers

    
por Wicky 25.06.2012 / 21:51

2 respostas

1

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.

    
por Wicky 05.07.2012 / 20:30
1

É uma boa prática colocar essa funcionalidade em seus temas functions.php como uma ação f.e.

add_action('init', 'your_own_function', 1);

function your_own_function(){

  $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;

}
    
por Frankey 03.12.2014 / 08:33

Tags