要在 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
.
因此,如果您的目标是利用此类提供的功能,以下是建议的下一步操作列表,这些操作将使您到达您需要的位置:
安装 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/