WooCommerce API attributlar

Salam, Java istifadə edərək WooCommerce API-a qoşulub məhsul əlavə edirəm. Məhsulların şəkilləri və s. hamısı düşür. Attributlar üçün belə bir məntiq yazmışam ki, əgər attribut saytda mövcuddursa onu əlavə etsin (filter funksiyası üçün), yoxdursa custom attribute kimi əlavə etsin. Bunların hamısını əlavə edir. Sadəcə məhsul səhifəsinə girdikdə görünmür, gərək edit product bölümündən həmin məhsulda heç nəyi dəyişmədən manual olaraq update sözünə vurulsun ki, məhsulu açanda görünsün. API-la heç bir parametr dəyişmədən update göndərirəm, yenə görünmür. Problem nə ola bilər?


Yadda saxlama
Kateqoriya: Sual . , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (6 cavab var)

(22:33, 25/02/2023 ) #79549

CURL nümunə qoysaydınız əla olardı, ki görək hansı endpointə nə göndərirsiniz. Məsələn attributu taksonomiya kimi davranaraq update etməyə çalışırsınız, yoxsa WC api ilə müvafiq attribut endpoinləri ilə.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(16:55, 26/02/2023 ) #79552

Documentation’da qeyd edilən kimi göndərirəm, sadəcə position göndərmirəm. Sadəcə maraqlı olan olan budur ki, edit products-a daxil olduqda orada görünür, heç nə etmədən sadəcə update click etdikdə isə məhsulun öz səhifəsində də görünür.

curl -X POST https://example.com/wp-json/wc/v3/products \
    -u consumer_key:consumer_secret \
    -H "Content-Type: application/json" \
    -d '{
  "name": "Test",
  "type": "simple",
  "regular_price": "99.99",
  "images": [
    {
      "src": "example.org/example.jpg"
    },
    {
      "src": "example.org/example2.jpg"
    }
  ],
  "attributes": [
    {
      "id": 6,
      "visible": true,
      "variation": false,
      "options": ["Black"]
    },
    {
      "name": "Size",
      "visible": true,
      "variation": false,
      "options": ["S"]
    }
  ]
}'
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (02:50, 27/02/2023 ) #79556

    Indi aydın oldu.

    Təxminən belə bir format göndərməyiniz lazımdır:

    "attributes": [
                {
                    "id": 1,
                    "name": "Color",
                    "options": ["Blue"]
                }
            ]
    

    Başqa field-lərin olmasına ehtiyac yoxdur və tam işlək data formatıdır bu.

    Əsas məsələ burada id-dir. Əgər id düzgündürsə, bu zaman dediyiniz manual update-ə ehtiyac olmadan birbaşa işləməlidir hər şey.
    Əks halda atribut custom attribute kimi qeydə alınır, yəni postmeta olaraq (id=0), bu da ola bilər sizin theme-də dəstəklənmir.

    Siz manual qaydada update-ə basdıqda isə WooCommerce özü qarşılaşdırır postmeta və taksonomiyadakı atributları, əgər meta-dakı atribut term taksonomiyadakılara uyğun gəlirsə, sinxronlaşdırma edir. Ona görə də manual update ilə işləyir.
    Yəni belə deyək, bir az kustar da olsa siz belə həll də tətbiq edə bilərsiniz:

    Bir dənə custom endpoint yaradıb içində wp_update_post() hook-u run etmək. Və bu endpointi atribut daxil etdikdən sonra GET metodu ilə çağırmaq ki o manual edilən şey Java-dan çağırılaraq baş vermiş olsun.

    İndi isə əsas metoda qayıdaq:
    Troubleshoot üçün belə bir müqayisə apara bilərsiniz.

    1. Atributu APİ ilə göndərin və /wp-json/wc/v3/products/123 GET metodu ilə çəkin attributes bölməsini saxlayın.
    2. WP-Admində manual update basdıqdan sonra ki, hər şey düzəldi, dərhal /wp-json/wc/v3/products/123 GET metodu ilə bir də çəkin data, attributes bölməsini əvvəlki ilə müqayisə edin. Böyük ehtimal fərqin id-də olduğunu görəcəksiniz. Birincidə id=0, ikincidə id=hər hansı ədəd olacaq.

    Burada bir diqqətəlayiq məsələ də odur ki, orada sözükeçən İD term İD deyil, atributun qiymətinin id-si deyil, atributun özünün id-sidir. Onu da məsələn wp_woocommerce_attribute_taxonomies mysql table-dan görə bilərsiniz.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

      (10:48, 27/02/2023 ) #79558

      Deməli yazdığım məntiq belədir ki, əvvəlcə bütün attributları götürürəm, göndərilən productun attributunun name-i mövcuddursa attributların içində, həmin attributun id-sini götürüb, termlərini döngüyə salıram (max 100 qayıdır 1 dəfəyə), əgər termlərdə də attributun value-su varsa, həmin attributun id-sini və optionsa dəyərini göndərirəm. Attribut ümumiyyətlə yoxdursa və ya attribut var, dəyər yoxdursa, custom attribut kimi name, option və visible paramatrlərini göndərirəm. Response-u return edib yoxlayacam, təşəkkürlər.

      Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(12:47, 27/02/2023 ) #79560

Dediyiniz halda əgər çox request yaradırsa bu məsələ, yəni hər dəfə atribut adlarını yoxlamaq – o zaman dediyim custom yol daha asan görə bilər işinizi.

Yəni hər zaman Custom atribut kimi göndərin – heç nəyi yoxlamadan, əziyyətsiz filansız.

Sonra da custom endpoint ilə həmin post üçün wp_post_update-un içindəki o həlledici hook-nu run edin.
Bu zaman Woo özü həll edəcək custom->woo term sync məsələsini.

Bu hook haqqında da əlavə məlumat verim ki, bu metodu run edir:
WC_Meta_Box_Product_Data::prepare_attributes($data);

Daha konkret desəm əgər siz bir endpoint yaratsanız ki bu sadə funksiyanı run eləsin, məsələ bitmiş sayılar.

function called_from_custom_endpoint(){
        $post_id=$_POST["product_id"];
        $data["attribute_names"]=["pa_color"]; //$_POST["attribute_name"]
        $data["attribute_values"]=["Blue"];//$_POST["attribute_value"]
        $attributes=WC_Meta_Box_Product_Data::prepare_attributes($data);
        $product=wc_get_product($post_id);
        $product->set_attributes($attributes);
        $product->save();  
}
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (17:01, 01/03/2023 ) #79564

    Problem temada imiş, functions.php-də update edilərək həll edildi. Təşəkkürlər.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

E. Hacı cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (9 saat əvvəl)

Triste cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Software Developer cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Triste cavab verdi - Google Adsense vergi (6 gün əvvəl)

E. Hacı cavab verdi - Xif mn kodu (14 gün əvvəl)

Khagrov cavab verdi - Axtardığım mahnını tapa bilmirəm kömək edin (33 gün əvvəl)

E. Hacı cavab verdi - Dünəndən Kompüterlə Twitter/X və Pinterest -ə girə bilmirəm. (40 gün əvvəl)

orkhanrza cavab verdi - AZ9095də bağlama qalıb (45 gün əvvəl)

Ismayil1997 cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (54 gün əvvəl)

revan orucov cavab verdi - Bakıda evə 100mbps+ internet verən provayder var? (58 gün əvvəl)

E. Hacı cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (60 gün əvvəl)

Jurnalist cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (60 gün əvvəl)

asssa1 cavab verdi - Riyazi proqramlar üçün proqram (62 gün əvvəl)

Aleks cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (68 gün əvvəl)

E. Hacı cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (68 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23288 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024