在Wordpress插件中使用Woocommerce挂钩

在Wordpress插件中使用Woocommerce挂钩,wordpress,woocommerce,Wordpress,Woocommerce,我创建了一个使用woocommerce钩子的示例插件。基本上,我的需求是基于一些商业挂钩向wordpress页面的页脚添加一些javascript。然而,这些钩子似乎根本没有被烧掉。我已经安装了woocommerce。如果我将相同的代码放在主题的函数文件中,就会添加javascript,但不会从插件中添加 在插件中,有三个操作。第一个动作是一个普通的wp_页脚动作,它可以工作,并且添加了js。剩下的两人正在采取行动,不会被解雇。有人能帮忙吗?我肯定我打错电话了,但我不明白 <?php /*

我创建了一个使用woocommerce钩子的示例插件。基本上,我的需求是基于一些商业挂钩向wordpress页面的页脚添加一些javascript。然而,这些钩子似乎根本没有被烧掉。我已经安装了woocommerce。如果我将相同的代码放在主题的函数文件中,就会添加javascript,但不会从插件中添加

在插件中,有三个操作。第一个动作是一个普通的wp_页脚动作,它可以工作,并且添加了js。剩下的两人正在采取行动,不会被解雇。有人能帮忙吗?我肯定我打错电话了,但我不明白

<?php
/*
 * Plugin Name: Demo Woo Plugin
 * Plugin URI:
 * Description:
 * Version: 1.0
 * Author:
 * Author URI:
 * License: GPLv2
 */
/*
 */
if(!class_exists('Demowoo')) {

  class Demowoo {
    var $plugin_url;
    var $plugin_dir;

    public function __construct() {
      global $woocommerce;
      $this->plugin_url = trailingslashit( WP_PLUGIN_URL . '/' . dirname(plugin_basename(__FILE__)) );
      $this->plugin_dir = trailingslashit( plugin_dir_path(__FILE__) );

      add_action( 'wp_footer', array($this, 'demowoo_content') );
      // initiate woocommerce hooks and activities
      add_action('woocommerce_init', array($this, 'on_woocommerce_init'));
      add_action('woocommerce_after_cart_contents', 'cart_page_visited');
    }

    public function install() {
    }

    public function deactivate() {
    }

    /**
     * Append the required javascript.
     */

    public function demowoo_content() {
      echo '<script type="text/javascript">console.log("Demo Plugin Content");</script>';
    }

    public function on_woocommerce_init() {
      add_action('wp_footer', 'woocommerce_initialized');
    }
    public function woocommerce_initialized() {
        echo '<script type="text/javascript">console.log("JS through woo commerce init.");</script>';
    }

    public function cart_page_visited() {
      add_action('wp_footer', 'demo_woo_add_to_cart');
    }
    public function demo_woo_add_to_cart() {
      echo '<script type="text/javascript">console.log("JS for added_to_cart on the cart page");</script>';
    }

} //  End class

  $Demowoo = new Demowoo();

  if($Demowoo) {
    register_activation_hook( __FILE__, array(&$Demowoo, 'install'));

  }
}

add\u action
的所有调用都应该在第二个参数中使用
数组('this'method\u name')
,就像
wp\u footer
上的第一个钩子一样。这是因为您挂接的是对象的方法,而不是函数

如果只写方法的名称,WP将查找具有该名称的全局函数,而不是类方法。因为没有具有这些名称的全局函数,所以不会发生任何事情


array
语法允许WP不仅知道方法名,还知道应该从哪个对象调用它。PHP不能在没有对象实例的情况下调用对象方法,因此需要向挂钩系统提供一个实例。使用这里使用的定义插件的样式,对象实例通常总是
$this

所有对
add\u action
的调用都应该在第二个参数中使用
数组形式($this,'method\u name')
,就像
wp\u footer
上的第一个钩子一样。这是因为您挂接的是对象的方法,而不是函数

如果只写方法的名称,WP将查找具有该名称的全局函数,而不是类方法。因为没有具有这些名称的全局函数,所以不会发生任何事情

array
语法允许WP不仅知道方法名,还知道应该从哪个对象调用它。PHP不能在没有对象实例的情况下调用对象方法,因此需要向挂钩系统提供一个实例。使用此处使用的定义插件的样式,对象实例通常总是
$this