Suporte » Temas » Como trabalhar com classes externas no wordpress?

  • Encontrei um projeto interessante no Github:

    Google-Analytics-Cookie-Parser-PHP

    Esse projeto faz um parse dos cookies do analytics e transforma em variaveis informações como origem, midia, sessões, etc

    com o composer instalei as dependencias. O arquivo function.php esta na raiz do tema, arquivos criados pelo composer:

    /THEME
          /vendor
            autoload.php
            /composer
              files of composer
            /jflight
               /gacookie
                  /src
                  /tests
                  other files
      composer.json
      composer.lock
      function.php

    function que criei:

    require_once dirname(__FILE__).'/vendor/autoload.php';
    
    function get_data_cookies(){
    
                use Jflight\GACookie\GACookie;
    
                //utma
    
                $utma->time_of_first_visit; // DateTime
                $utma->time_of_last_visit; // DateTime
                $utma->time_of_current_visit; // DateTime
                $utma->session_count // Integer
    
                // utmz
    
                $utmz->timestamp; // DateTime
                $utmz->session_count // Integer
                $utmz->campaign_number // Integer
                $utmz->source // string
                $utmz->medium // string
                $utmz->campaign // string
                $utmz->term // string
                $utmz->content // string
    
    }
    add_action( 'wp_head', 'get_cookies' );

    como que eu faço para chamar a classe corretamente?

    use Jflight\GACookie\GACookie;
    
    Parse error: syntax error, unexpected 'use' (T_USE) in.. diretorio do tema...functions.php on line 622 

    Para imprimir em algum lugar do tema eu simplesmente faço:

    echo $utmz->source;

    ou preciso de alguma forma mencionar a função?

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • Moderador Leo Baiano

    (@leobaiano)

    Você está recebendo esse erro de sintaxe porque o operador use está dentro da função e não pode, coloca use Jflight\GACookie\GACookie; abaixo do require_once.

    Tudo que está dentro da função get_data_cookies é inutil, não está fazendo nada… sem contar que deve tá gerando erros de sintaxe. Não sei porque está utilizando a action wp_head, ela serve para imprimir coisas dentro da tag html <head> é isso que você precisa?

    Olha, eu dei uma olhada rápida na classe e acho que você só precisa fazer o seguinte:

    
    require_once dirname(__FILE__).'/vendor/autoload.php';
    use Jflight\GACookie\GACookie;
    $utma = GACookie::parse('utma');
    $utmz = GACookie::parse('utmz');
    
    function get_time_of_first_visit() {
    return $utma->time_of_first_visit;
    }
    

    Ai no tema você faz echo get_time_of_first_visit();.

    Cria uma função get para cada informação que você vai precisar exibir os dados no tema, seguindo o exemplo que dei.

    O ideal mesmo seria você construir um plugin, ai no plugin uma classe que extende a classe GACookie e define os metodos para recuperar pegar os valores de cada coisa que a classe GACookie fornece, mas por enquanto se seguir o modelo que fiz acima deve funcionar pra você.

    Uma curiosidade, como você pretende utilizar essas informações?

    Obrigada pela resposta @leobaiano,

    Estou tentando desta forma:

    require_once dirname(__FILE__).'/vendor/autoload.php';
    
    use Jflight\GACookie\GACookie;
    $utma = GACookie::parse('utma');
    $utmz = GACookie::parse('utmz');
    
    function get_cookies(){
    
    					//utma
    
    			 $args = $utma->time_of_first_visit; // DateTime
    			 $args = $utma->time_of_last_visit; // DateTime
    			 $args = $utma->time_of_current_visit; // DateTime
    			 $args = $utma->session_count; // Integer
    
    			// utmz
    
    			 $args = $utmz->timestamp; // DateTime
    			 $args = $utmz->session_count; // Integer
    			 $args = $utmz->campaign_number; // Integer
    			 $args = $utmz->source; // string
    			 $args = $utmz->medium; // string
    			 $args = $utmz->campaign; // string
    			 $args = $utmz->term; // string
    			 $args = $utmz->content;  // string
    
    			var_dump ($args);
    }

    ai no tema:

    echo get_cookies();

    Mas sempre retorna null, como você sugeriu também esta retornando vazio.

    Estou tentando colocar a origem e midia do visitante na mensagem do formulario de contato que criei. Só quero colocar essas variaveis no corpo da mensagem sem precisar criar plugin ou recorrer a algum existente

    Moderador Leo Baiano

    (@leobaiano)

    Abaixo de:

    
    use Jflight\GACookie\GACookie;
    $utma = GACookie::parse('utma');
    $utmz = GACookie::parse('utmz');
    

    Coloca print_r( $utma ); print_r( $utmz ); e me diz o que está sendo retornado.

    com o print_r não aparece nada com var_dump

    var_dump( $utma );
    var_dump( $utmz ); 
    bool(false) bool(false)
    Moderador Leo Baiano

    (@leobaiano)

    Bom, a classe é quem está retornando false, ou realmente está vazio ou tem algo errado com a classe.

    Muito obrigada pela ajuda @leobaiano, sabe me dizer o que mais posso tentar pra ver pq não esta imprimindo esses dados?

    Moderador Leo Baiano

    (@leobaiano)

    Eu acho que esses dados só vem quando você acessa a URL com alguns parâmetros ou quando acessa através de um link de anúncio do google. Qual URL você tentou acessar para testar?

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • O tópico ‘Como trabalhar com classes externas no wordpress?’ está fechado para novas respostas.