• Resolved slaviobratro

    (@slaviobratro)


    Zdravím, ako upravím sniped aby boli napr. dvaja dopravcovia aby som do php súboru nezadával sniped 2X?

    1. dopravca DPD – Hodnota > 50 inak 4
    2. dopravca ZASIELKOVNA_NA_ADRESU – hodnota > 50 inak 3,90

    Toto som skúsil, ale asi to bude potrebné skontrolovať. Pomôžete? Ďakujem

    /**
     * @param $data
     * @param \WC_Product $product
     *
     * @return array
     */
    function custom_xml_feed_heureka_item_data( $data, $product ): array
    {
        if ( $product->get_price() > 50 ) { // Je-li cena produktu DPD vyšší než daná hodnota
            foreach ( $data as $key => $item ) {
                if (strpos($key, '__custom:DELIVERY') !== false && $item['DELIVERY_ID'] === 'DPD') { 
                    $data[$key]['DELIVERY_PRICE'] = 0;
                    $data[$key]['DELIVERY_PRICE_COD'] = 0;
                }
            }
        }
       if ( $product->get_price() > 50 ) { // Je-li cena produktu Zasielkovna vyšší než daná hodnota
            foreach ( $data as $key => $item ) {
                if (strpos($key, '__custom:DELIVERY') !== false && $item['DELIVERY_ID'] === 'DZASIELKOVNA_NA_ADRESU') { 
                    $data[$key]['DELIVERY_PRICE'] = 0;
                    $data[$key]['DELIVERY_PRICE_COD'] = 0;
                }
            }
        }
        return $data;
    }
    
    add_filter( 'wpify_woo_xml_feed_heureka_item_data', 'custom_xml_feed_heureka_item_data', 10, 2 );
Viewing 2 replies - 1 through 2 (of 2 total)
  • Plugin Contributor Martin Svoboda

    (@martinsvoboda)

    Dobrý den,
    Kdybyste v ID pro Zásilkovnu neměl překlep, tak by vám to i fungovalo. Ale je-li pro obě doručovací metody stejná podmínka, tak není nutné ji také opakovat a obě se mohou vložit do jedné. Pokud se i oběma metodám zároveň nastavuje i stejná data, tak je možné využít jen jednu funkci a pouze do podmínky vložit obě ID doprav. vyzkoušejte tedy takto:

    /**
     * @param $data
     * @param \WC_Product $product
     *
     * @return array
     */
    function custom_xml_feed_heureka_item_data( $data, $product ): array
    {
        if ( $product->get_price() > 50 ) { // Je-li cena produktu vyšší než daná hodnota
            foreach ( $data as $key => $item ) {
                if ( strpos($key, '__custom:DELIVERY') !== false && in_array( $item['DELIVERY_ID'], [ 'DPD', 'ZASIELKOVNA_NA_ADRESU' ] ) ) { 
                    $data[$key]['DELIVERY_PRICE'] = 0;
                    $data[$key]['DELIVERY_PRICE_COD'] = 0;
                }
            }
        }
        return $data;
    }
    
    add_filter( 'wpify_woo_xml_feed_heureka_item_data', 'custom_xml_feed_heureka_item_data', 10, 2 );
    Thread Starter slaviobratro

    (@slaviobratro)

    Áno, nakoniec sa mi podarilo vygenerovať správne xml, kde je výrobca, alternatívny obrázok a dvom dopravcom sa mení cena na základe ceny viac ako 50
    Celý snippet tu

    //*HEUREKA wpifiwoo pridat výrobcu imgurl_alternative a cenu dopravcov ak prekročí cena 50e do feedu
    /**
     * @param             $data
     * @param \WC_Product $product
     *
     * @return array
     */
    function custom_xml_feed_heureka_item_data( $data, $product ): array {
            $vyrobca        = $product->get_attribute( 'vyrobca' );
    	$attachment_ids = $product->get_gallery_image_ids();
    
            if ( $vyrobca ) {
                $data['MANUFACTURER'] = array( '_cdata' => $vyrobca );
            }
    
    		if ( $attachment_ids ) {
    			foreach ( $attachment_ids as $attachment_id ) {
    				$data[ '__custom:IMGURL_ALTERNATIVE:' . rand() ] = array( '_cdata' => wp_get_attachment_url( $attachment_id ) );
    			}
    		}
    
    		if ( $product->get_price() > 50 ) { // Je-li cena produktu vyšší než daná hodnota
    			foreach ( $data as $key => $item ) {
    				if (strpos($key, '__custom:DELIVERY') !== false && $item['DELIVERY_ID'] === 'DPD') { 
    					$data[$key]['DELIVERY_PRICE'] = 0;
    					$data[$key]['DELIVERY_PRICE_COD'] = 0;
    				}
    			}
    		}
    
    	
    	    if ( $product->get_price() > 50 ) { // Je-li cena produktu vyšší než daná hodnota
            foreach ( $data as $key => $item ) {
                if (strpos($key, '__custom:DELIVERY') !== false && $item['DELIVERY_ID'] === 'ZASIELKOVNA_NA_ADRESU') { 
                    $data[$key]['DELIVERY_PRICE'] = 0;
                    $data[$key]['DELIVERY_PRICE_COD'] = 0;
                }
            }
        }
        return $data;
    	
    }
    
    add_filter( 'wpify_woo_xml_feed_heureka_item_data', 'custom_xml_feed_heureka_item_data', 10, 2 );

    Veľká vďaka

    • This reply was modified 2 years, 1 month ago by slaviobratro.
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Doprava zdarma Heureka feed pre viacerých dopravcov’ is closed to new replies.