1

所以我有两个文件,“header.php”和“pluginfile.php”

我要调用的函数位于“pluginfile.php”中,并且是:

public function getNonSubscriptionAmount() {
    $total = 0;
    foreach($this->_items as $item) {
      if(!$item->isSubscription()) {
        $total += $item->getProductPrice() * $item->getQuantity();
      }
      else {
        // item is subscription
        $basePrice = $item->getBaseProductPrice();
        Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Item is a subscription with base price $basePrice");
        $total += $basePrice;
      }
    }
    return $total;
  }

所以在'header.php'中我有:

<?php
include_once($_SERVER['DOCUMENT_ROOT']."/wp-content/plugins/plugin-name/folder/PluginFile.php");
print getNonSubscriptionAmount();
?>

加载任何页面时都会出现以下错误:

致命错误:在第 72 行的 /home/username/domain.com/wp-content/themes/theme/header.php 中调用未定义函数 getnonsubscriptionamount()

我现在已经花了几个小时试图独自解决这个问题,但一无所获!非常感谢任何帮助!

4

2 回答 2

1

@Wiseguy 看起来他在评论中提出了正确的想法。

您正在声明一个方法而不是一个函数。该函数是您的 plugin.php 文件的全部还是更多?如果是一切,请删除 public 修饰符并声明

function getNonSubscriptionAmount() {
  // code here
}

但从代码的外观来看,它是一个更大类的一部分。如果是这样,那么@Wiseguy 注释是正确的,您需要在 plugin.php 中实例化该类的新对象,然后实例化所需的方法。

$obj = new PluginClass();
$obj->getNonSubscriptionAmount();
于 2012-08-17T18:04:36.663 回答
0

你说:

我要调用的函数位于“plugin.php”中,并且是:

在您的文件中,您包括:

所以在'header.php'中我有: include_once($_SERVER['DOCUMENT_ROOT']."/wp-content/plugins/plugin-name/folder/PluginFile.php"); 打印 getNonSubscriptionAmount();

您不包括函数存在的“plugin.php”。

Header.php 应该包含“plugin.php”,而不是“PluginFile.php”。

于 2012-08-17T18:10:24.623 回答