php - 如何在 wordpress 中使用外部类

标签 php wordpress cookies google-analytics

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

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

我在 github 中发现了一个有趣的项目,它解析了 Google Analyitics 的 cookie,并通过它可以访问有关访问者访问的一些信息:来源、媒体、 session 等。

Google-Analytics-Cookie-Parser-PHP

但是当我将项目类转换为 wordpress 功能时,我的问题是什么?

我知道这可能是一个广泛的问题,但答案可能很短。例如从类在functions.php中的文件中插入一个php url包含

谢谢

编辑

Composer 创建的文件,函数.php 也是主题的根源

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

函数.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' );

如何正确调用类(class)?
use Jflight\GACookie\GACookie;

Parse error: syntax error, unexpected 'use' (T_USE) in.. directory theme...functions.php on line 622 
get_data_cookie s函数正确吗?

在我简单使用的主题的任何地方打印:
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)

最佳答案

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

注意项目Google-Analytics-Cookie-Parser-PHP有一个 composer.json GitHub 存储库中的文件?您可以充分利用这一点。还要注意(通过查看它的composer.json 文件)包的名称是"name": "jflight/gacookie"。 .所以名字是jflight/gacookie .

因此,如果您的目标是利用此类提供的功能,以下是建议的下一步操作列表,这些操作将使您到达您需要的位置:

  • 点评:https://getcomposer.org/
  • 在您的个人计算机上安装 Composer。

  • 安装 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 添加的任何其他依赖项从命令行,也将自动变为可用,因为 vendor/autoload.php当/如果您自己的 PHP 文件中的代码尝试使用否则会丢失的 PHP 类时,文件将自动加载它们。这就是为什么它被称为“自动”装载机。

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

    关于php - 如何在 wordpress 中使用外部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47111774/

    相关文章:

    mysql - 使用 SQL 显示 WordPress 中的存档帖子

    javascript - 如何在没有 javascript 的情况下在客户端创建 cookie?

    php - Yii 框架 : Menu content that appears on every page

    php - AJAX 成功 php::删除选中的表列表::使用超链接不输入

    php - 结账页面 'Free Shipping'方法获取最小订单金额

    java - 解析 Cookie 响应中的正则表达式

    javascript - 为什么我的 cookie 没有被设置?

    javascript - 处理嵌套文件包含在 php 中并将值返回给 javascript 函数

    php - 回显没有和有循环的数组的键和值

    php - 在未经用户确认的情况下获取 paypal ipn 通知?