1

つまり、「header.php」と「pluginfile.php」の 2 つのファイルがあります。

呼び出したい関数は「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」には次のものがあります。print getNonSubscriptionAmount();

関数が存在する「plugin.php」は含まれていません。

Header.php には、「PluginFile.php」ではなく「plugin.php」を含める必要があります。

于 2012-08-17T18:10:24.623 に答える