Woocommerce呼叫网址(完成订单后)

时间:2013-08-16 12:33:40

标签: wordpress url woocommerce call orders

我有3个问题(需要帮助):

  1. 我不知道,如何运行此插件(给我致命错误)请检查我的脚本(我是初学者)
  2. 需要有关管理页面的帮助才能设置API密钥,并为调用网址http://xxx.CZhttp://xxx.SK选择语言(此页面尚未编写脚本)
  3. 如何将我的插件管理页面添加到woocommerce管理页面?
  4. 此插件适用于Woocommerce。当客户订购时,它应该调用特定的URL (http://heureka.cz/or .sk/dotaznik/"Clients API set up in admin page in woocommerce"/"Customers email"/"Order ID"/"bought Products ID"/)

    我是PHP和Wordpress的初学者。谢谢大家的帮助。

    CODE:

    <?php
    /*
    Plugin Name: Overené zákazníkmi Heureka
    Plugin URI: http://www.podujatie.eu
    Version: 0.1
    Description: 
    Author: Podujatie.eu, Ing. Igor Kóňa
    Tested up to: 3.6
    Author URI: http://www.podujatie.eu
    Text Domain: woocommerce-new-badge
    License: GNU General Public License v3.0
    License URI: http://www.gnu.org/licenses/gpl-3.0.html
    */
    /**
     * Check if WooCommerce is active
     **/
    if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    
        if ( ! class_exists( 'WC_HO' ) ) {
    
            class WC_HO {
    
            function heurekaovereno( $order_id ) {     
            error_log( "Order complete for order $order_id", 0 ); } 
            add_action( 'woocommerce_order_status_completed', 'heurekaovereno' );
    
        // order object (optional but handy)
        $order = new WC_Order( $order_id );
    
        // do some stuff here
            private function sendRequest($url)
            {
            $parsed = parse_url($url);
            $fp = fsockopen($parsed['host'], 80, $errno, $errstr, 5);
            if (!$fp) {
                throw new HeurekaOverenoException($errstr . ' (' . $errno . ')');
                } else {
                $return = '';
                $out = "GET " . $parsed['path'] . "?" . $parsed['query'] . " HTTP/1.1\r\n" .
                        "Host: " . $parsed['host'] . "\r\n" .
                        "Connection: Close\r\n\r\n";
                fputs($fp, $out);
                while (!feof($fp)) {
                    $return .= fgets($fp, 128);
                }
                fclose($fp);
                $returnParsed = explode("\r\n\r\n", $return);
    
                return empty($returnParsed[1]) ? '' : trim($returnParsed[1]);
                }
            }
            /**
         * Sends request to Heureka Overeno service and checks for valid response
         * 
         * @return boolean true
         */
        public function send()
            {
            if (empty($this->email)) {
                throw new HeurekaOverenoException('Customer email address not set');
            }
    
            // create URL
            $url = $this->getUrl() . '?id=' . $this->apiKey . '&email=' . urlencode($this->email);
            foreach ($this->products as $product) {
                $url .= '&produkt[]=' . urlencode($product);
                }
            foreach ($this->productsItemId as $itemId) {
                $url .= '&itemId[]=' . urlencode($itemId);
                }
    
            // add order ID
            if (isset($this->orderId)) {
                $url .= '&orderid=' . urlencode($this->orderId);
                }
    
            // send request and check for valid response
            $contents = $this->sendRequest($url);
            if ($contents == FALSE) {
                throw new HeurekaOverenoException('Unable to create HTTP request to Heureka Overeno service');
                } elseif ($contents == self::RESPONSE_OK) {
                return TRUE;
                } else {
                throw new HeurekaOverenoException($contents);
                }
            }
            /**
         * Adds ordered products using item ID
         *
         * @param string $itemId Ordered product item ID
         */
        public function addProductItemId($itemId)
        {
            $this->productsItemId[] = $itemId;
        }
            /**
         * Adds ordered products using name
         * 
         * Products names should be provided in UTF-8 encoding. The service can handle
         * WINDOWS-1250 and ISO-8859-2 if necessary
         *
         * @param string $productName Ordered product name
         */
        public function addProduct($productName)
        {
            $this->products[] = $productName;
        }
            /**
         * Heureka endpoint URL
         *
         * @var string     
         */
        const BASE_URL = 'http://www.heureka.cz/direct/dotaznik/objednavka.php';
        const BASE_URL_SK = 'http://www.heureka.sk/direct/dotaznik/objednavka.php';
    
        /**
         * Language IDs
         *
         * @var int     
         */
        const LANGUAGE_CZ = 1;
        const LANGUAGE_SK = 2;
        /**
         * Valid response value
         *
         * @var string     
         */
        const RESPONSE_OK = 'ok';
    
        /**
         * Shop API key
         *
         * @var string     
         */
        private $apiKey;
    
        /**
         * Customer email
         *
         * @var string     
         */
        private $email;
    
        /**
         * Ordered products
         *
         * @var array     
         */
        private $products = array();
    
        /**
         * Order ID
         *
         * @var int    
         */
        private $orderId;
    
        /**
         * Current language identifier
         *
         * @var int     
         */
        private $languageId = 1;
    
        /**
         * Ordered products provided using item ID
         * 
         * @var array
         */
        private $productsItemId = array();
    
        /**
         * Initialize Heureka Overeno service 
         *
         * @param string $apiKey Shop API key
         * @param int $languageId Language version settings
         */
        public function __construct($apiKey, $languageId = self::LANGUAGE_CZ)
        {
            $this->setApiKey($apiKey);
            $this->languageId = $languageId;
        }
    
        /**
         * Sets API key and check well-formedness
         * 
         * @param string $apiKey Shop api key
         */
        public function setApiKey($apiKey)
        {
            if (preg_match('(^[0-9abcdef]{32}$)', $apiKey)) {
                $this->apiKey = $apiKey;
            } else {
                throw new OverflowException('Api key ' . $apiKey . ' is invalid.');
            }
        }
    
        /**
         * Sets customer email
         *
         * @param string $email Customer email address
         */
        public function setEmail($email)
        {
            $this->email = $email;
        }
    
        // Default options
        add_option( 'wc_nb_newness', '30' );
    
    
        // Admin
        add_action( 'woocommerce_settings_image_options_after', array( $this, 'admin_settings' ), 20);
        add_action( 'woocommerce_update_options_catalog', array( $this, 'save_admin_settings' ) );
    
    
    
                /*-----------------------------------------------------------------------------------*/
                /* Class Functions */
                /*-----------------------------------------------------------------------------------*/
    
                // Load the settings
                function admin_settings() {
                    woocommerce_admin_fields( $this->settings );
                }
    
    
                // Save the settings
                function save_admin_settings() {
                    woocommerce_update_options( $this->settings );
                }
    
            if (!isset($wpdb)) $wpdb = $GLOBALS['wpdb'];
    
            $heurekaovereno_ver = '1.00';
    
            $WC_HO = new WC_HO();
            }
        }
    }
    ?>
    

1 个答案:

答案 0 :(得分:0)

只有当你把它放在functions.php中时,这个脚本才能工作(它有很少的bug,但它有效) Here is where I am asking, why is it.