WE CREATE PLUGINS DESIGNED
TO MEET EVERY NEED AND REQUIREMENT.

WooCommerce Skroutz & BestPrice XML Feed

0 ReviewsDeveloped by Web Expert
99,00

WooCommerce Skroutz & BestPrice XML Feed

0 ReviewsDeveloped by Web Expert

WooCommerce Skroutz & BestPrice XML Feed is an essential tool for every online store displayed in the product search engine Skroutz.gr and BestPrice.gr. With the WooCommerce Skroutz & BestPrice XML Feed, you advertise your products daily to Skroutz or BestPrice, automatically generating the XML that contains all the features required by Skroutz and BestPrice to display your store smoothly.
The XML is automatically updated for the addition, deletion and modification of products, without requiring your intervention.

Features

  • Size Variation support
  • Separate variations as seperate products
  • Compatibility with all plugin brands 100%
  • Native additional images support with WooCommerce Additional Variation Images
  • Select description between description/ short description
  • Multiple attributes/ taxonomies for manufacturer, color, size
  • Availability for modification at variation level
  • Exclude/ Include products based on category, tag and attribute
  • Ability to hide unavailable variations
  • Ability to display attributes in the title of variations
  • Possibility to modify product id (for transfers from another e-commerce cms)
  • Correct display of status on pre-ordered products
  • Support custom product ID, custom SKU and custom availability via setting
  • Separation of product color variations with separate Unique ID
  • Grouping variations by size
  • Choose time to regenerate XML (via WP Cron)
  • Support fixed shipping rate
  • Export and display of the quantity and the VAT of the products.
  • Include availability for Skroutz
  • Display MPN from default WooCommerce SKU field
  • Creation of an ID/ Barcode field in the settings of the product
  • Supports main categories of the Rank Math, YOAST and the SEO Framework
  • Ability to generate XML via real cron, Plesk/ Cpanel or crontab
  • Ability to generate XML via WP CLI
  • Conforms to all specifications of Skroutz & BestPrice
  • Compatible with Woo Discount Rules by Flycart
  • Compatible with Dynamic Pricing & Discounts by RightPress
  • Notify the administrator whenever the XML update fails

The plugin provides filters where you can pass your own values. You can find them below under the “Developers” tab.

Combine it with our plugin Skroutz Smart Cart so you can accept and manage orders placed through the Skroutz Marketplace.

Our goal is the optimal operation of your online store and the automation of processes.

The requirements of Skroutz are many and different for each e-shop. We at Web Expert, try to satisfy all their requirements. If you encounter any issue regarding XML modification, you can contact us at support@webexpert.gr

Γιατί να διαλέξετε την Web Expert

Quick & instant installation

We undertake to install the plugin immediately from the moment of purchase of the plugin! Contact us to do the installation!

Upload & edit licenses at any time

You can find and download the plugin at any time through the account uploads you have created on our site.

Free support & lifetime automatic updates

Our plugin license includes free updates and lifetime automatic updates without any annual subscription!

Customizable with code

The plugin provides filters where you can pass your own values.

Size variation

It is possible to display in the XML file the stock quantity of variants that have only sizes.

Gegenerate XML via WP Cron and Cron Jobs

Set the XML update time either through the plugin or through the server. Notify if XML update fails.

Product grouping & separation

The plugin groups products by size while separating them by color.

Customize products and variations

Customization via custom fields from where you can fill in the EAN/Barcode as well as the availability prices.

Hide products

Hide products through plugin settings by attribute, category or tag.

Ability to override

You are given the option to override the plugin fields so that they are drawn from your own custom fields.

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Ερωτήσεις

How to install the plugin?

Installing the plugin is a very simple process. First, you need to download the plugin from the Web Expert membership area and save it to your computer. Then, on your website, from the WordPress admin area, go to “Plugins>Add New Plugin” and select “Upload Plugin”. Finally, you select the file you saved on your computer and select “Install Now”. For more information look up the corresponding README file that comes with the plugin or consult the plugin’s documentation.

Does the plugin group and separate products?

Our plugin groups products by size while separating them by color. It automatically takes over the separation of variations into separate products if it detects the existence of color as an attribute. If you have, for example, a product in 3 colors, the XML will show 3 products, with their corresponding available sizes. What you will need to do is fill in the size and color attributes in the corresponding fields of the plugin, which participate in your products.

Is it compatible with plugins for brands?

Yes! Most brand additives mainly use taxonomy to create the brand. In WooCommerce Skroutz & BestPrice XML we give you the ability to define classifications as attributes. So we cover 100% compatibility with ALL plugins for brands.

What should I do if they ask me to see the entire category path?

Based on Skroutz’s requirements, at least two categories must appear in the category path, that is, it does not accept product paths from parent categories. Therefore, you only need to have selected the last subcategory in your products. However, our plugin supports Yoast SEO primary category and Rank Math primary category, so it pulls this path from the category you’ve chosen as primary. Otherwise it fetches the first selected class, and if that is a parent, it cannot be seen as a path in the XML file.

Why are discounts not showing up in XML?

If you have passed offers or discounts dynamically (eg using a plugin) they cannot be retrieved from the XML as they are not saved  in the database. However, our plugin is compatible with Dynamic Pricing & Discounts by RightPress plugins.

Can my products have different availability terms?

Product availability can be set at product and variation level. This means you can set different terms (Instock, Available from 1 to 3 days, Available from  4 to 10 days, Available from 10 to 30 days), in the simple product settings and even in variations! If the value is declared as default, it takes the availability you selected in the plugin settings.

How can I hide products from XML?

You can set various product hiding criteria, such as category, attribute or label, and a combination of these. For example, you can hide products that belong to one or more categories, that belong to an attribute and have a specific label. You can also hide pre-order and out of stock products by selecting “Hide from XML” in the “Pre-order availability” and “Non Availability” options.

I have transferred my eshop from another platform and I have a different product ID

To serve the above need, you can declare the custom field that will derive the product ID, either through the Custom Product ID field from the plugin settings or you can set it up via hook (webexpert_skroutz_xml_custom_id).

In the product code field (SKU) I have the code of my own warehouse and I have the supplier code in another field. How to send the correct SKU & MPN?

You are given the option to set the custom field from which the MPN will be derived, via the Custom Product MPN field from the plugin settings. In case you have filled in the MPN as an attribute you can set it up via hook (webexpert_skroutz_xml_custom_sku).

Where can I fill in the EAN/Barcode?

By installing our plugin, the EAN/Barcode field is created in the product settings (simple & variations) where you can fill in the product’s barcode. Alternatively, if you have already filled in the EAN/Barcode in a custom field, you have the possibility to define it through the Custom Product EAN field from the plugin settings. Alternatively you can set it up via hook (webexpert_skroutz_xml_custom_ean).

Is it possible to fill in the barcode field via CSV?

If you wish to enter values ​​in the barcode field using Excel CSV, you will need to name the corresponding meta column: we_skroutzxml_ean_barcode

What is the most likely reason why the XML file is not being created?

The most common cause of the XML file not being generated is the memory limit compared to the volume of products. Try raising the memory limit (WP_MEMORY_LIMIT) and the max execution time (max_execution_time) of PHP, on the server side that serves you. Alternatively you can configure the XML update via cron from the server. The commands you will use are mentioned in the next answer.

When creating the XML I get an Error 500 or technical problem or XML tells me it is invalid

As mentioned in the previous answer, the WooCommerce Skroutz & BestPrice XML plugin is programmed to generate the XML in its entirety, not in parts, and requires memory and power, commensurate with the products. Try raising the PHP memory limit (WP_MEMORY_LIMIT) and max execution time (max_execution_time) on your server. Alternatively you can set the XML update via cron from the server. The commands you will use are mentioned in the next answer.

Another cause is some special characters in products, properties or categories, reading which “breaks” the file, such as &, <, >, quotation marks (“) and apostrophe (‘). You will need to check which products you have gone through copy paste to delete the special characters.

I have a large amount of data. What can I do;

The WooCommerce Skroutz & BestPrice XML plugin is programmed to generate XML in its entirety and not in parts. This means that you need memory and power, proportional to the products. However, it is built to do proper memory management and has been tested on many providers with simple hosting packages and performs very well. To meet even the most demanding users, it can be run via WP Cron, Scheduled Tasks (Plesk), Cron Jobs (cPanel) and crontab, to minimize memory requirements.

What can I do if the XML file does not refresh automatically?

You will need to check the operation of WP_CRON.
Alternatively, if you want the XML output via a cron job rather than WP Cron, you need to call the cron-v3.php file
e.g. php -d /home/domain/public_html/domain.gr/wp-content/plugins/webexpert-skroutz-xml-feed/cron-v3.php

*Check the path of the cron-v3.php file on your server

Is it possible to refresh XML via WP CLI?

In case you want the XML to be generated via WP CLI:

wp-cli webexpert-xml generate

What can I do if I experience timeouts or a white screen when I export the XML file?

If you’re experiencing timeouts or a white screen when exporting the XML file, try reducing the value in the Max Page Size field (<100) from our plugin settings.

How can I check the validity of the XML Feed based on the Skroutz specifications?

You can use the Data Feed Validator to check the validity of your XML Feed against the Skroutz specifications
https://validator.skroutz.gr/

How can I check the validity of the XML Feed based on the BestPrice specifications?

You can use the Data Feed Validator to check the validity of your XML Feed against the BestPrice specifications

https://merchants.bestprice.gr/xml-validator/

Why not set the “any size” option to display in the xml all the attributes that participate in the variations?

The “any size” option should not be selected when you wish to display all variation attributes. The correct way is to declare all attributes on the variations in order for the store to meet the skroutz requirements. This is why there is also the size variation field so that it draws the corresponding stock from the size of each variation you have declared. You will need to select “generate variations from all attributes” instead.

Why am I being flagged by Skroutz for duplicate product entries in the xml?

In some cases the products are not properly grouped and separated, resulting in the same product title appearing in the xml multiple times. You can check from the settings it adds, in the size and color field, if you have declared all the options involved in the size and color variations, so that the product variations are created correctly. Also you can choose “Include attribute color value” from the options of variations.

Why should I enable the option “Activates Nested Variation System”?

You can enable this option in order to display the stock quantity of the variations in the XML, if you also have enabled stock management and filled in a stock number. For example, if you have a product with sizes small, medium, large, and its stock is 1,2,3 for each size, when you use the size variation it shows the stock of each variation separately and not the total stock in each variation, i.e. 6 At the same time you can enable it to hide the variations with zero stock from the XML.

In which case should I enable the option for “the color ID combined with the parent product ID in variants, if applicable”?

You must activate this option, if you want the parent ID-color ID to be appeared in the product id field of the variations in the XML (it is recommended to activate this option after contacting with the Skroutz Marketplace). You must activate this option if you have our “Skroutz Smart Cart” plugin and have activated the corresponding option there as well.

In which case should I enable the option “Do not group single sized variations, where applicable”?

You can activate this option if you want your products to not be grouped and seperated in the XML. This option is also created in the attributes’ settings and you will need to enable it there as well.

How do I display Additional Images on products that Skroutz requires?

If the product is simple then our plugin can display them in the xml. Also if it is variable and there are variations with one color, it will be able too to display the Additional Images in the XML.
In case that your variable products have variations with two or more colors then our plugin will not be able to separate which photos will appear in the variations of one color and which in the variations of the other, that is why the use of the filter webexpert_skroutz_xml_custom_gallery is needed.

What can I do if I get an invalid license while I have entered it correctly?

First, you can try to remove the license key from the plugin settings, select save settings, and then enter it again.

In case the server that serves you, blocks the communication to webexpert.gr, the license check can not be performed. You can contact your provider and request that our IP addresses be included in the white list: 5.9.116.30 and 5.9.116.27.

Προγραμματιστές

If you want XML to output via cron job and not WP Cron, you need to call the cron-v3.php file:
e.g. php -d /home/domain/public_html/domain.gr/wp-content/plugins/webexpert-skroutz-xml-feed/cron-v3.php

*Check the path of the cron-v3.php file on your server

The plugin provides filters, where you can pass your own values:

webexpert_skroutz_xml_custom_id
webexpert_skroutz_xml_custom_product_title
webexpert_skroutz_xml_custom_links
webexpert_skroutz_xml_custom_gallery_image
webexpert_skroutz_xml_custom_image
webexpert_skroutz_xml_custom_gallery
webexpert_skroutz_xml_custom_categories
webexpert_skroutz_xml_custom_description
webexpert_skroutz_xml_custom_ean
webexpert_skroutz_xml_custom_manufacturer
webexpert_skroutz_xml_custom_pricing
webexpert_skroutz_xml_custom_shipping
webexpert_skroutz_xml_custom_sku
webexpert_skroutz_xml_hide_certain_product_ids
webexpert_skroutz_xml_product_visibility_control
webexpert_skroutz_xml_custom_vat
webexpert_skroutz_xml_custom_quantity
webexpert_custom_size_replace
webexpert_skroutz_xml_availability
webexpert_skroutz_xml_preailability
webexpert_skroutz_xml_noailability
webexpert_skroutz_xml_custom_args
webexpert_skroutz_xml_custom_weight
webexpert_skroutz_xml_additional_fields
webexpert_custom_attribute_availiablity
webexpert_skroutz_xml_availability_field
webexpert_skroutz_xml_custom_admin_email
webexpert_skroutz_xml_custom_color
webexpert_skroutz_xml_custom_instock
webexpert_skroutz_xml_custom_filename
webexpert_skroutz_xml_custom_sizes

The hooks we offer are indicative and need modification. They should be added to the child theme’s functions.php.

For the use of a custom title (if available)

add_filter('webexpert_skroutz_xml_custom_product_title','webexpert_skroutz_xml_custom_product_title',10,2);
function webexpert_skroutz_xml_custom_product_title($product_title, $product) {
if ($product->is_type('variation')) {
$parent = wc_get_product($product->get_parent_id());
if ($parent) {
$product_title.=($parent->get_attribute('chrwma') ? ' '.$parent->get_attribute('chrwma') : '');
}
}else {
$product_title.=($product->get_attribute('chrwma') ? ' '.$product->get_attribute('chrwma') : '');
}

     return $product_title;
}

To use a custom ID (if available)

add_filter('webexpert_skroutz_xml_custom_id','webexpert_skroutz_xml_custom_product_id',10,2);

function webexpert_skroutz_xml_custom_product_id($product_id,$product) {
     $custom_value=$product->get_meta('_custom_id',true);
     return ($custom_value ? $custom_value : $product_id);
}

To use SKU as ID (if available)

add_filter('webexpert_skroutz_xml_custom_id','webexpert_skroutz_xml_custom_product_id',10,2);

function webexpert_skroutz_xml_custom_product_id($product_id,$product) {
     return ($product->get_sku() ? $product->get_sku() : $product_id);
}

To use a custom SKU (if available)

add_filter('webexpert_skroutz_xml_custom_sku','webexpert_skroutz_xml_custom_product_sku',10,2);

function webexpert_skroutz_xml_custom_product_sku($sku,$product) {
     $custom_value=$product->get_meta('_custom_sku',true);
     return ($custom_value ? $custom_value : $sku);
}

To use custom EAN (if available)

add_filter('webexpert_skroutz_xml_custom_ean','webexpert_skroutz_xml_custom_product_ean',10,2);

function webexpert_skroutz_xml_custom_product_ean($ean,$product) {
     $custom_value=$product->get_meta('_custom_ean',true);
     return ($custom_value ? $custom_value : $ean);
}

To retrieve the EAN from an attribute

add_filter('webexpert_skroutz_xml_custom_ean','webexpert_skroutz_xml_custom_product_ean',10,2);

function webexpert_skroutz_xml_custom_product_ean($ean,$product) {
$custom_value=$product->get_attribute('barcode');
}

To retrieve the MPN from an attribute

add_filter('webexpert_skroutz_xml_custom_sku','webexpert_skroutz_xml_custom_product_mpn',10,2);
 
function webexpert_skroutz_xml_custom_product_mpn($mpn,$product) {
     $custom_value=$product->get_attribute('mpn');
     return $custom_value ? $custom_value : $product->get_sku();
}

To retrieve the MPN from custom field

add_filter('webexpert_skroutz_xml_custom_sku','webexpert_skroutz_xml_custom_product_mpn',10,2);

function webexpert_skroutz_xml_custom_product_mpn($mpn,$product) {
    $custom_value=$product->get_meta('mpn',true);
    return $custom_value ? $custom_value : '';
}

To send a manufacturer if it does not exist as an attribute (eg OEM)

add_filter('webexpert_skroutz_xml_custom_manufacturer','skroutz_xml_custom_manufacturer',10,2);
function skroutz_xml_custom_manufacturer($manufacturer,$product) {
    if ($product->get_attribute('marka')) {
        return $product->get_attribute('marka');
    } else {
        return "ΟΕΜ";
    }
}

To use custom categories

add_filter('webexpert_skroutz_xml_custom_categories','webexpert_skroutz_xml_custom_mycategories',10,2);

function webexpert_skroutz_xml_custom_mycategories($categories,$product) {
     array_unshift($categories, "E-shop");
     return $categories;
}

To send a different featured image (if available)

add_filter('webexpert_skroutz_xml_custom_image','webexpert_skroutz_xml_custom_image_with_acf',10,2);
function webexpert_skroutz_xml_custom_image_with_acf($image_url, $product){
     $custom_url = null;
     if (!empty($product->get_meta('skroutz_image'))) {
         $custom_url = wp_get_attachment_url($product->get_meta('skroutz_image'));
     }

     return $custom_url ?: $image_url;
}

For the use of custom additional images in variations (varies according to the plugin)

add_filter('webexpert_skroutz_xml_custom_gallery','webexpert_skroutz_xml_custom_gallery',10,2);

function webexpert_skroutz_xml_custom_gallery($gallery_image_ids,$product) {
     if ( $product->is_type( 'variation' ) ) {
         $colour=get_post_meta($product->get_id(), 'attribute_pa_'.esc_attr( get_option('we_skroutz_xml_colour')), true);
         if ($colour) {
             $gallery=get_post_meta($product->get_parent_id(),'_product_image_gallery_pa_'.esc_attr( get_option('we_skroutz_xml_colour').'-'.$colour,true));
             if (is_array($gallery)) {
                 $gallery=end($gallery);
             }
             $expl=explode(",",$gallery);
             array_shift($expl);
             return $expl;
         }
         return [];
     }else {
         return $gallery_image_ids;
     }
}

For the use of additional images from the WoodMart theme

add_filter('webexpert_skroutz_xml_custom_gallery','webexpert_skroutz_xml_custom_gallery_woodmart',10,2);

function webexpert_skroutz_xml_custom_gallery_woodmart($gallery_image_ids, $product){
     if ($product->is_type('variation')) {
         if (!empty($product->get_meta('wd_additional_variation_images_data'))) {
             return explode(",",$product->get_meta('wd_additional_variation_images_data'));
         }
     }
     return $gallery_image_ids;
}

For the use of custom additional images in white, when the main Gallery has images not accepted, using ACF – Gallery

add_filter('webexpert_skroutz_xml_custom_gallery','webexpert_skroutz_xml_custom_gallery_with_acf',10,2);

function webexpert_skroutz_xml_custom_gallery_with_acf($gallery_image_ids, $product){
     return $product->get_meta('skroutz_gallery') ?: $gallery_image_ids;
}

To display the main language, using WPML

add_filter( 'webexpert_skroutz_xml_custom_args', 'show_posts_in_current_lang', 10);
function show_posts_in_current_lang( $args )
{
     global $sitepress;
     $lang='en';
     $sitepress->switch_lang($lang);

     $args['suppress_filters'] = 'false';
     return $args;
}

To display the main language, using WPML (2nd way)

add_filter('webexpert_skroutz_xml_product_visibility_control','webexpert_hide_en_language_wpml',11,2);
function webexpert_hide_en_language_wpml($default,$product) {
     $langs=['en'];
     $clang = apply_filters( 'wpml_post_language_details', NULL, $product->get_id() );
     if (in_array($clang['language_code'], $langs)) {
         return true;
     }
     return false;
}

For displaying Greek, using Polylang

add_filter('webexpert_skroutz_xml_custom_args','webexpert_skroutz_xml_custom_args',99);

function webexpert_skroutz_xml_custom_args($args) {
     $args['lang'] = 'el';
     return $args;
}

To display the WooCommerce label Skroutz & BestPrice XML Feed in the availability field, instead of WooCommerce.

add_filter( 'woocommerce_get_availability_text', 'customizing_availability_text', 10, 2);
function customizing_availability_text( $availability, $product )
{
         if ($product->get_manage_stock()==false) {
                 $is_on_backorder=$product->is_on_backorder() || $product->backorders_allowed() || ($product->is_type('variable') && $product->child_is_on_backorder());
         }else {
                 $is_on_backorder=$product->get_stock_quantity()<=0 && ($product->is_on_backorder() || $product->backorders_allowed() || ($product->is_type('variable') && $product->child_is_on_backorder()));
         }

         if ($product->is_in_stock() && !$is_on_backorder) {
                 if ($product->get_meta('we_skroutzxml_custom_availability',true) !== "Hide from XML") {
                     return $product->get_meta('we_skroutzxml_custom_availability',true) ? $product->get_meta('we_skroutzxml_custom_availability',true) : get_option('we_skroutz_xml_availability');
                 }
             } else {
                 if ($is_on_backorder) {
                     if ($product->get_meta('we_skroutzxml_custom_preavailability',true) !== "Hide from XML") {
                         return $product->get_meta('we_skroutzxml_custom_preavailability',true) ? $product->get_meta('we_skroutzxml_custom_preavailability',true) : get_option('we_skroutz_xml_preavailability');
                     }
                 }else {
                     if ($product->get_meta('we_skroutzxml_custom_noavailability',true) !== "Hide from XML") {
$skroutz_option = $product->get_meta('we_skroutzxml_custom_noavailability',true) ? $product->get_meta('we_skroutzxml_custom_noavailability',true) : get_option('we_skroutz_xml_noavailability');
return ($skroutz_option!=="Hide from XML" ? $skroutz_option : "Not available");
                     }
                 }
             }

         return $availability;
}

To retrieve product availability from a property

add_filter('webexpert_skroutz_xml_availability_field','webexpert_custom_attribute_availiablity',10,3);

function webexpert_custom_attribute_availiablity($availability,$product,$type) {
     if ($product->is_type('variation')) {
         $parent=$product->get_parent_id();
         if ($parent)
             $custom_availability = $parent->get_attribute('diathesimotita');
     }else {
         $custom_availability = $product->get_attribute('diathesimotita');
     }

     return $custom_availability ?? $availability;
}

In case you want to apply different prices (due to VAT and not showing it)

add_filter('webexpert_skroutz_xml_custom_pricing','webexpert_custom_price_with_vat',10,2);

function webexpert_custom_price_with_vat($price,$product) {
     switch ($product->get_tax_class()) {
         case "meiwmenos-syntelesths":
             $price=$price*1.17;
         breaks?
         case "mhdenikos-syntelesths":
             // no change
         breaks?
         default:
             // standard rate
             $price=$price*1.24;
     }

     return round($price,2);
}

In case you want to apply your own product hiding criteria (eg products without images)

add_filter('webexpert_skroutz_xml_hide_certain_product_ids','hide_products_without_images',99);
function hide_products_without_images($arr) {
     global $wpdb;
     $product_ids = $wpdb->get_col("
         SELECT ID
         FROM {$wpdb->prefix}posts p
         WHERE ID NOT IN (SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_key = '_thumbnail_id')
         AND p.post_type = 'product'
         AND p.post_status = 'publish'
     ");
     return $product_ids;
}

To hide products based on your condition (eg products that have quantity 1)

add_filter('webexpert_skroutz_xml_product_visibility_control','webexpert_hide_products_with_qty_one',10,2);
function webexpert_hide_products_with_qty_one($default,$product) {
    global $product;
    $stock = $product->get_stock_quantity();
    if ($stock == 1)
        return false;
    return $default;
}

To hide products without a photo

add_filter('webexpert_skroutz_xml_product_visibility_control','webexpert_hide_products_with_no_image',10,2);
function webexpert_hide_products_with_no_image($default,$product) {
     if (empty($product->get_image_id()))
         return false;
     return $default;
}

To display a custom price (e.g. increase by 1 euro)

add_filter('webexpert_skroutz_xml_custom_pricing','webexpert_custom_price_with_vat',10,2);
 
function webexpert_custom_price_with_vat($price,$product) {
     $price=$product->get_price()+1;
     return round($price,2);
}

To display custom weight

add_filter('webexpert_skroutz_xml_custom_weight','my_custom_weight',10,2);
function my_custom_weight($weight,$product) {
return !empty($product->get_meta('_custom_weight')) ? $product->get_meta('_custom_weight') : $weight;
}

To display weight

 add_filter('webexpert_skroutz_xml_custom_weight','my_custom_weight',10,2);
     function my_custom_weight($weight,$product) {
         return 2;
     }

To display a custom quantity (eg for quantity 3)

add_filter('webexpert_skroutz_xml_custom_quantity','custom_quantity_rule',10,2);
function custom_quantity_rule($default,$product) {
    if ($product->get_manage_stock() == false)
        return "3";
    return $default;
}

To retrieve the description or short description if either is filled

add_filter('webexpert_skroutz_xml_custom_description',function($description,$product){
     if (empty($product->get_short_description())) {
         return $product->get_description();
     }
     return $description;
},10,2);

To change the path from which the xml will be output and the name of the XML file

In config.php fill in the following lines:

if (!defined('WE_XML_SKROUTZ_PLUGIN_PATH')) {
  define( 'WE_XML_SKROUTZ_PLUGIN_PATH', "/custom_folder");
}

if (!defined('WE_XML_SKROUTZ_PLUGIN_URL')) {
  define('WE_XML_SKROUTZ_PLUGIN_URL', "https://www.webexpert.gr/custom_folder");
}

To change the name of the XML file, fill in the functions.php of the child theme following hook:

add_filter('webexpert_skroutz_xml_custom_filename',function ($default_name){
  return "products.xml";
},10,1);
The products were successfully added to your cart.