如何将javascript api添加到wordpress function.php
我正在尝试向Wordpress添加一个短信API,它使用Woocommerce挂钩发送订单确认消息。经过一番研究,我发现下面的代码here,它的工作原理是一样的。提供如何将javascript api添加到wordpress function.php
add_action('woocommerce_payment_complete', 'custom_process_order', 10, 1);
function custom_process_order($order_id) {
//Lets get data about the order made
$order = new WC_Order($order_id);
//Now will fetch customer/buyer id here
$customer_id = $order->user_id;
//now finally we fetch phone number
$billing_phone = get_user_meta($customer_id, 'billing_phone', true);
// Now put your HTTP SMS API URL . I PUT WHICH WE ARE USING
$jsonurl = "http://tsms.thirdeyegoa.com/api/sendmsg.php?user=USERNAME&pass=PASSWORD&sender=MYSENDERID&phone=".$billing_phone."&priority=ndnd&stype=normal&text=MY MESSAGE TO CUSTOMER.";
// NOW WILL CALL FUNCTION CURL
$json = curl($jsonurl);
return $order_id;
}
的API代码我收到的短信网关是
// Include provided Java Script
<script language="javascript" src="https://domainapi.js" type="text/javascript"> </script>
<script language="javascript">
// Replace your API key at below line
var apikey = 'ABCDEFGH1234567890abcdefghQWERTY123=';
// Form your data object
var mail_details = { email : '[email protected]', msgid : '82', listname : '', prefix : '', firstname : 'John', middlename : '', lastname : 'Doe', telephone : '', address : '', city : '', state : '', pincode : '', country : '', mobile : '9999999999', designation : '', company : '', companyphone : '', birthdate : '', anniversary : '', extra1 : '', extra2 : '' }
call_api(apikey, 'sendSingleSMS', mail_details, function(response) { document.getElementById('show').innerHTML=response; });</script>
请告诉我如何这个API在WordPress的上述脚本集成。
大概你试图将你的API脚本混合到“WordPress的方式”,并从WooCommerce的订单加载一些数据。首先,您需要在主插件文件中注册您的脚本:
add_action('wp_enqueue_scripts', 'so_38554614_enqueue_scripts');
function so_38554614_enqueue_scripts(){
wp_register_script('your-api', 'https://domainapi.js', array(), '1.0', true);
wp_register_script('your-script', 'path-to-your-script.js', array('your-api'), '1.0', true);
}
然后,您需要将它们加载到付款完成页面上。您还需要利用wp_localize_script()
将一些变量传递给脚本。
add_action('woocommerce_payment_complete', 'custom_process_order', 10, 1);
function custom_process_order($order_id) {
//Lets get data about the order made
$order = new WC_Order($order_id);
wp_enqueue_script('your-api');
wp_enqueue_script('your-script');
$l18n = array('mail_details'=>
array(
email' => $order->billing_email,
'msgid' => 82,
'listname' => '',
'firstname' => $order->billing_first_name,
'middlename' => '',
'lastname' => $order->billing_last_name,
'telephone' => $order->billing_phone,
'address'= >$order->billing_address_1 . ' ' . $order->billing_address_2,
'city' => $order->billing_city,
'state' => $order->billing_state,
'pincode' => '',
'country' => $order->billing_country,
'mobile' => $order->billing_phone
'designation' => '',
'company' => $order->billing_company,
'companyphone' => '',
'birthdate' => '',
'anniversary' => '',
'extra1' => '',
'extra2' => ''
),
'apikey' => 'ABCDEFGH1234567890abcdefghQWERTY123=');
wp_localize_script('your-script', 'Your_JS_Object', $l18n);
wp_localize_script()
return $order_id;
}
最后,你的JavaScript文件存储在你的插件的某个地方。这需要这是由wp_localize_script()
创建JavaScript对象Your_JS_Object
的优势:
// Java Script path-to-your-script.js
call_api(Your_JS_Object.apikey, 'sendSingleSMS', Your_JS_Object.mail_details, function(response) { document.getElementById('show').innerHTML=response; });
非常感谢,请告诉我wp_register_script('your-script','path-to-your-script.js',array('your-api'),'1.0',true);'这段代码是用于插件注册的吗? @helgatheviking – user3475163
请参阅['wp_register_script()'](https://developer.wordpress.org/reference/functions/wp_register_script/)的文档。这是从插件加载脚本的正确方法。 – helgatheviking
我刚开始使用Wordpress,你能告诉我在哪个Wordpress文件中应该放置上述三段代码吗? @helgatheviking – user3475163
请解释一下您更多的问题。您只需将代码粘贴到functions.php中并提供javascript代码,而我没有看到任何2个文件一起工作? –
嗨,感谢您的关注....我试图添加[this](http://docs.juvlon.com/api/sendTransSms.html#sendSingleSMS)api到我的Woocommerce商店,当订单是完成。你能告诉我我该怎么做? @QuỳnhNguyễn – user3475163
这是短信网关文档的建议。请检查[此api文档](http://docs.juvlon.com/api/sendTransSms.html#sendSingleSMS)@LoicTheAztec – user3475163