Kuidas kuvada seotud tooteid WooCommerce REST API abil
Veebipoodide puhul on ilmne, et seonduvaid tooteid näidatakse ühel toote üksikasjade lehel. See aitab teie klientidel näidata sarnaseid tooteid, mida nad võib-olla tahavad osta. Samuti suurendab see teie veebisaidil kasutajate seotust. Kui kliendid veedavad teie poes rohkem aega, on rohkem võimalusi, et nad teie tooteid ostaksid. Selles artiklis näitan teile, kuidas näidata seotud tooteid WooCommerce REST API abil.
Selles õpetuses toome kõik praeguse tootega seotud tooted ja kuvan need seejärel. Samuti linkin iga toote selle üksikasjade lehele.
Selles artiklis selgitatud näidet saab kasutada ka WooCommerce’i veebisaidil. Seda tehnikat saab kasutada ja kuvada seotud tooteid ilma ühtegi pistikprogrammi kasutamata. See annab teile suurema kontrolli oma tootelehe kujunduse ja märgistuse üle.
Hankige oma tarbija võti ja saladus
Kui otsustate alustada WooCommerce REST API-ga, peate kõigepealt hankima oma tarbija võtme ja saladuse. Need võtmed on poe identifikaator ja vajalikud, kui helistate WooCommerce API-le. Võite selle kohta rohkem lugeda nende dokumentatsioonist.
Esmalt installige oma veebisaidile pistikprogramm WooCommerce. Seejärel minge lehele WooCommerce-> Seaded. Klõpsake vahekaarti Täpsemalt ja seejärel linki REST API.
Klõpsake sellel lehel nuppu "Loo API võti".
Sisestage kirjeldus, valige luba „Loe" ja vajutage nuppu Loo API võti. Võite valida ka loa / kirjutamise loa. See sõltub teie nõudest. Kui peate lihtsalt WooCommerce’ist andmeid lugema, valige suvand "Loe". Ja kui soovite teha nii lugemis- kui ka kirjutamistoiminguid, on teie ilmne variant „Loe / kirjuta”. Siin sihime ainult seotud tooteid, nii et loa loast piisab.
Kopeerige oma tarbija võti ja kliendisaladus, mis on vajalik API-kõnede tegemisel.
WooCommerce REST API seotud toodete hankimiseks
Kui olete oma tarbijavõtme ja kliendisaladusega valmis, võime alustada koodist, mis annab API-kõne WooCommerce’i lõpp-punktile. Kuna peame esmalt hankima seotud tooteid, peame API kaudu saama ühe toote andmed. Selle põhjuseks on see, et tavaliselt kuvame oma sarnased tooted ühel tootelehel.
Kuna peame saatma HTTP-päringuid, installige Guzzle’i teek, kasutades allolevat käsku.
composer require guzzlehttp/guzzle
Guzzle on PHP HTTP-klient, mis hõlbustab HTTP-päringute saatmist ja on triviaalne integreerimine veebiteenustega.
Lõpuks kirjutame ühe toote ja seejärel sellega seotud toodete saamiseks koodi. Kui WooCommerce tagastab toote andmed, sisaldab see vastusena ka väärtust „related_ids”. Need väärtused pole muud kui seotud toodete ID-d. Nii et sellega seoses on meie PHP-kood järgmine.
<?php
require_once "vendor/autoload.php";
use GuzzleHttpClient;
define('WC_CONSUMER_KEY', 'PASTE_CONSUMER_KEY_HERE');
define('WC_CONSUMER_SECRET', 'PASTE_CONSUMER_SECRET_HERE');
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'YOUR_DOMAIN_BASE_URL',
]);
try {
$response = $client->request('GET', '/wp-json/wc/v3/products/PRODUCT_ID_HERE', [
'headers' => [
"Authorization" => "Basic ". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)
],
'verify' => false, //only needed if you are facing SSL certificate issue
]);
$body = $response->getBody();
$arr_body = json_decode($body);
$response = $client->request('GET', '/wp-json/wc/v3/products', [
'headers' => [
"Authorization" => "Basic ". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)
],
'query' => [
'include' => $arr_body->related_ids,
],
'verify' => false,
]);
$body = $response->getBody();
$arr_products = json_decode($body);
if (!empty($arr_products)) {
foreach ($arr_products as $product) {
?>
<p>
<a href="<?php echo $product->permalink; ?>"><?php echo $product->name; ?></a>
</p>
<?php
}
}
} catch (Exception $e) {
echo $e->getMessage();
}
Asendage kohatäide „PRODUCT_ID_HERE” tegeliku väärtusega. Ülaltoodud koodis edastan parameetri "include" massiivina seotud_id-ga. Seejärel annab WooCommerce vastuseks meile kõik üksikasjad toodete kohta. Seejärel läheme sellest läbi ja kuvame toote pealkirja ning selle lingi. Kasutaja saab printida ka muud andmed vastusest.