1
我有3個問題(需要幫助):Woocommerce呼叫URL(後完成訂單)
- 我不知道,如何運行該插件(給了我致命錯誤)請檢查我的腳本(我上午初學者)
- 需要有關管理頁面幫助建立APIkey並選擇通話網址http://xxx.CZ或http://xxx.SK語言(此頁尚未腳本)
- 如何添加我的插件管理頁面,woocommerce管理頁面?
這個插件是爲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();
}
}
}
?>