如何在wordpress中使用外部类

时间:2017-11-04 14:29:28

标签: php wordpress cookies google-analytics

要在wordpress中添加新功能,我知道我们必须做这样的事情:

function favicon() {
    // function code
}
add_action('wp_head', 'favicon');

我在github中找到了一个有趣的项目,该项目解析了Google Analyitics的cookie,并且我可以访问有关访问者访问的一些信息:来源,媒体,会话等。

Google-Analytics-Cookie-Parser-PHP

但我的问题是,我将项目类转换为wordpress函数?

我知道这可能是一个广泛的问题,但答案可能很短。例如,从类在functions.php

中的文件中插入一个php url include

感谢

修改

作曲家创建的文件 function.php 也是主题的根源

------------------

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

function.php

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' );

如何正确调用课程?

use Jflight\GACookie\GACookie;

Parse error: syntax error, unexpected 'use' (T_USE) in.. directory theme...functions.php on line 622 

get_data_cookie的功能是否正确?

在我只是使用的主题上的任何地方打印:

echo $utmz->source;

或者我应该以某种方式提及这个功能?

-------更新------

require get_template_directory().'/vendor/autoload.php';

use Jflight\GACookie\GACookie;


function get_cookies(){

    $utma = GACookie::parse('utma');
    $utmz = GACookie::parse('utmz');
    var_dump( $utma );
    var_dump( $utmz ); 

                    //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


}

以我正在提出的主题的联系方式

<?php get_cookies() ?>

但它正在回归:

bool(false)bool(false)

1 个答案:

答案 0 :(得分:2)

PHP应用程序的标准,无论它们是否是WordPress插件,都是使用Composer来满足依赖关系并利用Composer提供的自动加载功能。

请注意,项目Google-Analytics-Cookie-Parser-PHP在GitHub仓库中有一个composer.json文件?你可以充分利用这一点。另请注意(通过查看其composer.json文件)包的名称为"name": "jflight/gacookie"。所以名称是jflight/gacookie

因此,如果您的目标是利用此课程提供的功能,以下是一个建议的下一步操作列表,可以帮助您达到所需的目标:

安装Composer后,从终端(命令行)输入:

$ cd /path/to/local/project/dir
$ composer require jflight/gacookie

自动下载类文件并将它们全部放入名为vendor/的项目目录中的特殊文件夹中。它还将在项目目录中创建一个composer.json文件。

现在,您可以利用名为自动加载的Composer功能。要利用您在命令行中所需的新依赖项,请将以下行添加到PHP文件中,这是您在提出此问题时开始的位置。

<?php
require_once dirname(__FILE__).'/vendor/autoload.php';

function favicon() {
    // Refer to the class documentation.
    // You can now use the class here to achieve something.
}
add_action('wp_head', 'favicon');

提示:值得注意的是,您通过从命令行键入composer require something/else添加的任何其他依赖项也将自动变为可用,因为{{当/如果你自己的PHP文件中的代码试图使用原本会丢失的PHP类时,文件将自动加载它们。这就是为什么它被称为&#39; auto&#39;加载器。

WordPress:当您将其安装到WordPress中时,您应该上传所有内容,包括整个vendor/autoload.php目录及其内容。这些现在是你的插件的依赖。