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

Software Developer cavab verdi - Payoneer kartdan pul çıxartdıqda vergi (10 saat əvvəl)

Software Developer cavab verdi - Wise vasitəsilə bank kartına pul köçürmə (4 gün əvvəl)

Software Developer cavab verdi - Rus dilindən mətni tərcümə etmək (5 gün əvvəl)

Cənab cavab verdi - Almanca söz bazası yığmaq (7 gün əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (8 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (8 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (8 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (8 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (8 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (10 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (10 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (20 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (21 gün əvvəl)

rdrobert cavab verdi - Xaricdən telefon getirmek (21 gün əvvəl)

rdrobert cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (22 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 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ş 23236 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

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