WordPress

Jak powtórzyć kod PHP w odmianie produktu WooCommerce?

  • 26 września, 2018
  • 3 min read
Jak powtórzyć kod PHP w odmianie produktu WooCommerce?


Mam trochę kompleksów, aby wyjaśnić problem, który mam nadzieję, że ktoś może zrozumieć i mi pomóc.

Ustawiłem niestandardowe pola w WooCommerce, których używam do wprowadzania określonego kodu dla każdego produktu (coś w rodzaju SKU o nazwie „asin”), a następnie używam tego kodu na moim zapleczu za pomocą Amazon API, aby uzyskać cenę ze strony produktu na Amazon ( nie martw się, moje pytanie jest ogólne i niezwiązane z interfejsem API).

Oto próbka mojego kodu dla prostego typu produktu, który działa idealnie tak, jak potrzebuję.

<?php
    //This is the code i use to get the "asin" value from custom fields.
    $de_asin = get_post_meta(get_post()->ID, "wccaf_de_asin", true );

    $associate_id = "google-21";
    $access_key = "N22EKJMDWJMDWIJWIJWDIWDW";
    $secret_key = "48UJIFJIJFEIFJF89U8EKFIEJIUJWHUFUEFJFSIJF";
    $amazon_domain = "amazon.de";
    $asin = $de_asin;

    // This is the code i use to get the product price from amazon website using it's api
    include 'amazon-api/amazon_class.php';
    $amazon = new AmazonAPI($associate_id , $access_key, $secret_key , $amazon_domain);
    $item = $amazon->item_lookup($asin)->get_item_data();
    echo $item->price;

?>  

Mój problem dotyczy odmian produktów, ponieważ potrzebuję, aby cena niestandardowa zmieniała się, gdy przełączam się między odmianami.

Warto przeczytać!  Jak łatwo przetłumaczyć WordPress za pomocą TranslatePress

To jest kod, którego używam, aby uzyskać niestandardową wartość produktu dla odmiany typu produktu „kod asin”, który działa idealnie, ale muszę dodać cenę podobną do tej, którą zrobiłem z prostym produktem powyżej i użyć asin aktualnie wybranej odmiany i użyć tego asin w powyższej zmiennej Amazon API.

Dostałem stąd to niestandardowe pole dla różnych produktów

<?php

add_filter( 'woocommerce_available_variation', 'custom_load_variation_settings_products_fields' );
function custom_load_variation_settings_products_fields( $variations ) {    
    // duplicate the line for each field
    $variations['wccaf_de_asin_var'] = get_post_meta( $variations[ 'variation_id' ], 'wccaf_de_asin_var', true );   
    $variations['wccaf_uk_asin_var'] = get_post_meta( $variations[ 'variation_id' ], 'wccaf_uk_asin_var', true );   
    return $variations;
}

    //wccf_after_variation_description is a hook i created into variation.php
    add_action( 'wccf_after_variation_description', 'wcff_variation_affiliate_button', 10);
    function wcff_variation_affiliate_button() {

        // IP Geolocation   
        $country_code = $_SERVER ["HTTP_CF_IPCOUNTRY"];
        $de_asin = '{{{ data.variation.wccaf_de_asin_var }}}';
        $uk_asin = '{{{ data.variation.wccaf_uk_asin_var }}}';

        if ($country_code=="DE") {  
        $asin = $de_asin;   
        }

        if ($country_code=="GB") {  
        $asin = $uk_asin;
        }
        echo $asin;
    }   
    ?>  

Myślę, że głównym problemem jest to, że ten kod pobiera asin wybranej odmiany za pomocą javascript po wyrenderowaniu strony i muszę pobrać asin wybranej odmiany i wysłać ją do php, abym mógł wysłać ją przez Amazon API, aby uzyskać cenę. Zastanawiam się więc, czy jest jakiś sposób na użycie kodu API ceny pokazanego na pierwszym prostym fragmencie i użycie go w drugim fragmencie odmiany?

Warto przeczytać!  niestandardowe typy postów — Problemy z paginacją i filtrowaniem Ajax

Z góry bardzo dziękuję 🙂


Źródło