$val){ if (($key != "All countries") && ($key != "Custom Feed")){ array_push ($channel_countries, $key); } } return $channel_countries; } public function get_channels($country){ $channels = array(); $channel_configs = get_option ('channel_statics'); // Lets get the generic channels foreach ($channel_configs as $key=>$val){ if($key == "Custom Feed" || $key == "All countries"){ $channels = array_merge ($channels, $val); } } // Than get the relevant country channels foreach ($channel_configs as $key=>$val){ if(preg_match("/-$country/i", $key)){ $channels = array_merge($channels, $val); } elseif ($country == "$key"){ $channels = array_merge($channels, $val); } } return $channels; } private function get_dynamic_attributes(){ global $wpdb; $list = array(); $no_taxonomies = array("portfolio_category","portfolio_skills","portfolio_tags","nav_menu","post_format","slide-page","element_category","template_category","portfolio_category","portfolio_skills","portfolio_tags","faq_category","slide-page","category","post_tag","nav_menu","link_category","post_format","product_type","product_visibility","product_cat","product_shipping_class","product_tag"); $taxonomies = get_taxonomies(); $diff_taxonomies = array_diff($taxonomies, $no_taxonomies); # get custom taxonomy values for a product foreach($diff_taxonomies as $tax_diff){ $taxonomy_details = get_taxonomy( $tax_diff ); foreach($taxonomy_details as $kk => $vv){ if($kk == "name"){ $pa_short = $vv; } if($kk == "labels"){ foreach($vv as $kw => $kv){ if($kw == "singular_name"){ $attr_name = $pa_short; $attr_name_clean = ucfirst($kv); } } } } $list["$attr_name"] = $attr_name_clean; } return $list; } private function get_custom_attributes() { global $wpdb; $list = array(); if ( ! function_exists( 'woosea_get_meta_keys_for_post_type' ) ) : function woosea_get_meta_keys_for_post_type( $post_type, $sample_size = 'modified' ) { $meta_keys = array(); $add_woosea_basic = get_option ('add_woosea_basic'); if($add_woosea_basic == "yes"){ $posts = get_posts( array( 'post_type' => $post_type, 'limit' => $sample_size ) ); } else { $posts = get_posts( array( 'post_type' => $post_type, 'numberposts' => -1 ) ); } foreach ( $posts as $post ) { $post_meta_keys = get_post_custom_keys( $post->ID ); if(empty($post_meta_keys)){ $post_meta_keys = array(); } $meta_keys = array_merge( $meta_keys, $post_meta_keys ); } // Use array_unique to remove duplicate meta_keys that we received from all posts // Use array_values to reset the index of the array return array_values( array_unique( $meta_keys ) ); } endif; $post_type = "product"; $data = woosea_get_meta_keys_for_post_type($post_type); if (count($data)) { foreach ($data as $key => $value) { if (!preg_match("/_product_attributes/i",$value)){ $value_display = str_replace("_", " ",$value); $list["custom_attributes_" . $value] = ucfirst($value_display); } else { $data = @$wpdb->get_results( // $wpdb->prepare(" // SELECT // meta.meta_id, // meta.meta_value AS type // FROM {$wpdb->prefix}postmeta AS meta, // {$wpdb->prefix}posts AS posts // WHERE meta.post_id = posts.id // AND posts.post_type LIKE '%product%' // AND meta.meta_key='_product_attributes' AND meta.meta_value NOT LIKE \"%{}\";") $wpdb->prepare(" SELECT meta.meta_id, meta.meta_value AS type FROM {$wpdb->prefix}postmeta AS meta, {$wpdb->prefix}posts AS posts WHERE meta.post_id = posts.id AND posts.post_type LIKE '%s' AND meta.meta_key='_product_attributes' AND meta.meta_value NOT LIKE \"%{}\"", array( '%product%' )) ); if (count($data)) { foreach ($data as $key => $value) { $product_attr = unserialize($value->type); if(!empty($product_attr)){ foreach ($product_attr as $key => $arr_value) { $value_display = str_replace("_", " ",$arr_value['name']); $list["custom_attributes_" . $key] = ucfirst($value_display); } } } } } } return $list; } return false; } public function get_mapping_attributes_dropdown() { $sitename = get_option('blogname'); $mapping_attributes = array( "categories" => "Category", "title" => "Product name", ); /** * Create dropdown with main attributes */ $dropdown = ""; $dropdown .= "Main attributes"; foreach ($mapping_attributes as $key=>$value) { if ($key == "categories"){ $dropdown .= ""; } else { $dropdown .= ""; } } $dropdown .=""; $other_attributes = array( "all_products" => "Map all products", ); $dropdown .= "Other options"; foreach ($other_attributes as $key=>$value) { $dropdown .= ""; } return $dropdown; } public function get_special_attributes_dropdown(){ /** * Create dropdown with product attributes */ $dropdown = ""; $custom_attributes = $this->get_custom_attributes(); if ( class_exists( 'All_in_One_SEO_Pack' ) ) { $custom_attributes['custom_attributes__aioseop_title'] = "All in one seo pack title"; $custom_attributes['custom_attributes__aioseop_description'] = "All in one seo pack description"; } if($custom_attributes){ $dropdown .= "Custom attributes"; foreach ($custom_attributes as $key => $value) { if (strpos($value, 0, 1) !== "_") { // Exclude total sales if($key != "custom_attributes_total_sales"){ $value = str_replace("attribute","",$value); $dropdown .= ""; } } } $dropdown .=""; } return $dropdown; } public function get_special_attributes_clean(){ $custom_attributes = $this->get_custom_attributes(); return $custom_attributes; } public function get_product_attributes_dropdown() { $sitename = get_option('blogname'); $attributes = array( "id" => "Product Id", "sku" => "SKU", "sku_id" => "SKU_ID (Facebook)", "parent_sku" => "SKU parent variable product", "sku_item_group_id" => "SKU_ITEM_GROUP_ID (Facebook)", "wc_post_id_product_id" => "Wc_post_id_product_id (Facebook)", "title" => "Product name", "title_slug" => "Product name slug", "title_hyphen" => "Product name hyphen", "mother_title" => "Product name parent product", "mother_title_hyphen" => "Product name parent product hyphen", "title_lc" => "Product name lowercase", "title_lcw" => "Product name uppercase first characters", "description" => "Product description", "short_description" => "Product short description", "raw_description" => "Unfiltered product description", "raw_short_description" => "Unfiltered product short description", "mother_description" => "Product description parent product", "mother_short_description" => "Product short description parent product", "price" => "Price", "regular_price" => "Regular price", "sale_price" => "Sale price", "net_price" => "Price excl. VAT", "net_regular_price" => "Regular price excl. VAT", "net_sale_price" => "Sale price excl. VAT", "price_forced" => "Price incl. VAT front end", "regular_price_forced" => "Regular price incl. VAT front end", "sale_price_forced" => "Sale price incl. VAT front end", "sale_price_start_date" => "Sale start date", "sale_price_end_date" => "Sale end date", "sale_price_effective_date" => "Sale price effective date", "rounded_price" => "Price rounded", "rounded_regular_price" => "Regular price rounded", "rounded_sale_price" => "Sale price rounded", "system_price" => "System price", "system_net_price" => "System price excl. VAT", "system_net_sale_price" => "System sale price excl. VAT", "system_net_regular_price" => "System regular price excl. VAT", "system_regular_price" => "System regular price", "system_sale_price" => "System sale price", "vivino_price" => "Pinterest / TikTok / Vivino price", "vivino_sale_price" => "Pinterest / TikTok / Vivino sale price", "vivino_regular_price" => "Pinterest / TikTok / Vivino regular price", "vivino_net_price" => "Pinterest / TikTok / Vivino price excl. VAT", "vivino_net_regular_price" => "Pinterest / TikTok / Vivino regular price excl. VAT", "vivino_net_sale_price" => "Pinterest / TikTok / Vivino sale price excl. VAT", "non_geo_wcml_price" => "Non GEO WCML price", "mm_min_price" => "Mix & Match minimum price", "mm_min_regular_price" => "Mix & Match minimum regular price", "mm_max_price" => "Mix & Match maximum price", "mm_max_regular_price" => "Mix & Match maximum regular price", "separator_price" => "Separator price", "separator_regular_price" => "Separator regular price", "separator_sale_price" => "Separator sale price", "discount_percentage" => "Discount percentage", "link" => "Link", "link_no_tracking" => "Link without parameters", "variable_link" => "Product variable link", "add_to_cart_link" => "Add to cart link", "product_creation_date" => "Product creation date", "days_back_created" => "Product days back created", "currency" => "Currency", "categories" => "Category", "category_link" => "Category link", "category_path" => "Category path", "category_path_short" => "Category path short", "category_path_skroutz" => "Category path Skroutz", "one_category" => "Yoast / Rankmath primary category", "nr_variations" => "Number of variations", "nr_variations_stock" => "Number of variations on stock", "yoast_gtin8" => "Yoast WooCommerce GTIN8", "yoast_gtin12" => "Yoast WooCommerce GTIN12", "yoast_gtin13" => "Yoast WooCommerce GTIN13", "yoast_gtin14" => "Yoast WooCommerce GTIN14", "yoast_isbn" => "Yoast WooCommerce ISBN", "yoast_mpn" => "Yoast WooCommerce MPN", "condition" => "Condition", "purchase_note" => "Purchase note", "availability" => "Availability", "availability_date_plus1week" => "Availability date + 1 week", "availability_date_plus2week" => "Availability date + 2 weeks", "availability_date_plus3week" => "Availability date + 3 weeks", "availability_date_plus4week" => "Availability date + 4 weeks", "availability_date_plus5week" => "Availability date + 5 weeks", "region_id" => "Region Id", "stock_status" => "Stock Status WooCommerce", "quantity" => "Quantity [Stock]", "virtual" => "Virtual", "downloadable" => "Downloadable", "product_type" => "Product Type", "content_type" => "Content Type", "exclude_from_catalog" => "Excluded from catalog", "exclude_from_search" => "Excluded from search", "exclude_from_all" => "Excluded from all (hidden)", "total_product_orders" => "Total product orders", "tax_status" => "Tax status", "tax_class" => "Tax class", "featured" => "Featured", "item_group_id" => "Item group ID", "weight" => "Weight", "width" => "Width", "height" => "Height", "length" => "Length", "shipping" => "Shipping", "shipping_price" => "Shipping cost", "lowest_shipping_costs" => "Lowest shipping costs", "shipping_label" => "Shipping class slug", "shipping_label_name" => "Shipping class name", "visibility" => "Visibility", "rating_total" => "Total rating", "rating_average" => "Average rating", ); $images = array( "image" => "Main image", "image_all" => "Main image simple and variations", "feature_image" => "Featured image", "image_1" => "Additional image 1", "image_2" => "Additional image 2", "image_3" => "Additional image 3", "image_4" => "Additional image 4", "image_5" => "Additional image 5", "image_6" => "Additional image 6", "image_7" => "Additional image 7", "image_8" => "Additional image 8", "image_9" => "Additional image 9", "image_10" => "Additional image 10", "all_images" => "All images (comma separated)", "all_gallery_images" => "All gallery images (comma separated)", "all_images_kogan" => "All images Kogan (pipe separated)", ); /** * Create dropdown with main attributes */ $dropdown = ""; $dropdown .= "Main attributes"; foreach ($attributes as $key=>$value) { $dropdown .= ""; } $dropdown .=""; /** * Create dropdown with image attributes */ $dropdown .= "Image attributes"; foreach ($images as $key=>$value) { $dropdown .= ""; } $dropdown .=""; /** * Create dropdown with dynamic attributes */ $dynamic_attributes = $this->get_dynamic_attributes(); if($dynamic_attributes){ $dropdown .= "Dynamic attributes"; foreach ($dynamic_attributes as $key => $value) { // if (strpos($value, 0, 1) !== "_") { $dropdown .= ""; // } } $dropdown .=""; } $dropdown .= "Google category taxonomy"; $dropdown .= ""; $dropdown .=""; /** * Create dropdown with custom attributes */ $custom_attributes = $this->get_custom_attributes(); if ( class_exists( 'All_in_One_SEO_Pack' ) ) { $custom_attributes['custom_attributes__aioseop_title'] = "All in one seo pack title"; $custom_attributes['custom_attributes__aioseop_description'] = "All in one seo pack description"; } if($custom_attributes){ $dropdown .= "Custom field attributes"; foreach ($custom_attributes as $key => $value) { if (!preg_match("/pyre|sbg|fusion/i",$value)){ $value = ltrim($value); if (!empty($value)){ $dropdown .= ""; } } } $dropdown .=""; } /** * Add the product tag field */ $dropdown .= "Other fields"; $dropdown .= ""; $dropdown .= ""; $dropdown .= ""; $dropdown .= ""; $dropdown .= ""; $dropdown .= ""; // Did the user checked extra attributes if(get_option( 'woosea_extra_attributes' )){ $extra_attributes = get_option( 'woosea_extra_attributes' ); if($extra_attributes){ array_walk($extra_attributes, function(&$value, $key) { $value .= ' (Added Custom attribute)';}); $dropdown .= "Added Custom Attributes"; foreach ($extra_attributes as $key => $value) { // if (strpos($value, 0, 1) !== "_") { $dropdown .= ""; // } } $dropdown .=""; } } return $dropdown; } public function get_product_attributes() { $sitename = get_option('blogname'); $attributes = array( "id" => "Product Id", "sku" => "SKU", "sku_id" => "SKU_ID (Facebook)", "parent_sku" => "SKU parent variable product", "sku_item_group_id" => "SKU_ITEM_GROUP_ID (Facebook)", "wc_post_id_product_id" => "Wc_post_id_product_id (Facebook)", "title" => "Product name", "title_slug" => "Product name slug", "title_hyphen" => "Product name hyphen", "mother_title" => "Product name parent product", "mother_title_hyphen" => "Product name parent product hyphen", "title_lc" => "Product name lowercase", "title_lcw" => "Product name uppercase first characters", "description" => "Product description", "short_description" => "Product short description", "raw_description" => "Unfiltered product description", "raw_short_description" => "Unfiltered product short description", "mother_description" => "Product description parent product", "mother_short_description" => "Product short description parent product", "link" => "Link", "link_no_tracking" => "Link without parameters", "variable_link" => "Product variable link", "add_to_cart_link" => "Add to cart link", "image" => "Main image", "image_all" => "Main image simple and variations", "feature_image" => "Feature image", "product_type" => "Product Type", "content_type" => "Content Type", "exclude_from_catalog" => "Excluded from catalog", "exclude_from_search" => "Excluded from search", "exclude_from_all" => "Excluded from all (hidden)", "total_product_orders" => "Total product orders", "featured" => "Featured", "tax_status" => "Tax status", "tax_class" => "Tax class", "currency" => "Currency", "categories" => "Category", "raw_categories" => "Category (not used for mapping)", "google_category" => "Google category (for rules and filters only)", "category_link" => "Category link", "category_path" => "Category path", "category_path_short" => "Category path short", "category_path_skroutz" => "Category path Skroutz", "one_category" => "Yoast / Rankmath primary category", "nr_variations" => "Number of variations", "nr_variations_stock" => "Number of variations on stock", "yoast_gtin8" => "Yoast WooCommerce GTIN8", "yoast_gtin12" => "Yoast WooCommerce GTIN12", "yoast_gtin13" => "Yoast WooCommerce GTIN13", "yoast_gtin14" => "Yoast WooCommerce GTIN14", "yoast_isbn" => "Yoast WooCommerce ISBN", "yoast_mpn" => "Yoast WooCommerce MPN", "condition" => "Condition", "purchase_note" => "Purchase note", "availability" => "Availability", "availability_date_plus1week" => "Availability date + 1 week", "availability_date_plus2week" => "Availability date + 2 weeks", "availability_date_plus3week" => "Availability date + 3 weeks", "availability_date_plus4week" => "Availability date + 4 weeks", "availability_date_plus5week" => "Availability date + 5 weeks", "region_id" => "Region Id", "stock_status" => "Stock Status WooCommerce", "quantity" => "Quantity [Stock]", "virtual" => "Virtual", "downloadable" => "Downloadable", "price" => "Price", "regular_price" => "Regular price", "sale_price" => "Sale price", "net_price" => "Price excl. VAT", "net_regular_price" => "Regular price excl. VAT", "net_sale_price" => "Sale price excl. VAT", "price_forced" => "Price incl. VAT front end", "regular_price_forced" => "Regular price incl. VAT front end", "sale_price_forced" => "Sale price incl. VAT front end", "sale_price_start_date" => "Sale start date", "sale_price_end_date" => "Sale end date", "sale_price_effective_date" => "Sale price effective date", "rounded_price" => "Price rounded", "rounded_regular_price" => "Regular price rounded", "rounded_sale_price" => "Sale price rounded", "system_price" => "System price", "system_net_price" => "System price excl. VAT", "system_net_sale_price" => "System sale price excl. VAT", "system_net_regular_price" => "System regular price excl. VAT", "system_regular_price" => "System regular price", "system_sale_price" => "System sale price", "vivino_price" => "Pinterest / TikTok / Vivino price", "vivino_sale_price" => "Pinterest / TikTok / Vivino sale price", "vivino_regular_price" => "Pinterest / TikTok / Vivino regular price", "vivino_net_price" => "Pinterest / TikTok / Vivino price excl. VAT", "vivino_net_regular_price" => "Pinterest / TikTok / Vivino regular price excl. VAT", "vivino_net_sale_price" => "Pinterest / TikTok / Vivino sale price excl. VAT", "non_geo_wcml_price" => "Non GEO WCML price", "mm_min_price" => "Mix & Match minimum price", "mm_min_regular_price" => "Mix & Match minimum regular price", "mm_max_price" => "Mix & Match maximum price", "mm_max_regular_price" => "Mix & Match maximum regular price", "separator_price" => "Separator price", "separator_regular_price" => "Separator regular price", "separator_sale_price" => "Separator sale price", "discount_percentage" => "Discount percentage", "item_group_id" => "Item group ID", "weight" => "Weight", "width" => "Width", "height" => "Height", "length" => "Length", "shipping" => "Shipping", "shipping_price" => "Shipping cost", "lowest_shipping_costs" => "Lowest shipping costs", "shipping_label" => "Shipping class slug", "shipping_label_name" => "Shipping class name", "visibility" => "Visibility", "rating_total" => "Total rating", "rating_average" => "Average rating", "amount_sales" => "Amount of sales", "product_creation_date" => "Product creation date", "days_back_created" => "Product days back created", ); $images = array( "image" => "Main image", "image_all" => "Main image simple and variations", "feature_image" => "Featured image", "image_1" => "Additional image 1", "image_2" => "Additional image 2", "image_3" => "Additional image 3", "image_4" => "Additional image 4", "image_5" => "Additional image 5", "image_6" => "Additional image 6", "image_7" => "Additional image 7", "image_8" => "Additional image 8", "image_9" => "Additional image 9", "image_10" => "Additional image 10", "all_images" => "All images (comma separated)", "all_gallery_images" => "All gallery images (comma separated)", "all_images_kogan" => "All images Kogan (pipe separated)", ); $attributes = array_merge($attributes, $images); $static = array( "installment" => "Installment", "static_value" => "Static value", "calculated" => "Plugin calculation", "product_tag" => "Product tags", "product_tag_space" => "Product tags space", "product_detail" => "Product detail", "product_highlight" => "Product highlight", "menu_order" => "Menu order", "reviews" => "Reviews", "author" => "Author", ); $attributes = array_merge($attributes, $static); if(is_array($this->get_dynamic_attributes())){ $dynamic_attributes = $this->get_dynamic_attributes(); array_walk($dynamic_attributes, function(&$value, $key) { $value .= ' (Dynamic attribute)';}); $attributes = array_merge($attributes, $dynamic_attributes); } $custom_attributes = $this->get_custom_attributes(); if ( class_exists( 'All_in_One_SEO_Pack' ) ) { $custom_attributes['custom_attributes__aioseop_title'] = "All in one seo pack title"; $custom_attributes['custom_attributes__aioseop_description'] = "All in one seo pack description"; } array_walk($custom_attributes, function(&$value, $key) { $value .= ' (Custom attribute)';}); $attributes = array_merge($attributes, $custom_attributes); $attributes = array_merge($attributes, $static); // Did the user checked extra attributes if(get_option( 'woosea_extra_attributes' )){ $extra_attributes = get_option( 'woosea_extra_attributes' ); array_walk($extra_attributes, function(&$value, $key) { $value .= ' (Added Custom attribute)';}); $attributes = array_merge($attributes, $extra_attributes); } return $attributes; } public static function get_standard_attributes($project) { $sitename = get_option('blogname'); $standard_attributes = array( "id" => "Product Id", "title" => "Product name", "categories" => "Category", ); if ($project['taxonomy'] == 'google_shopping'){ $standard_attributes["google_product_category"] = "Google product category"; } elseif ($project['taxonomy'] != 'none'){ $standard_attributes["$project[name]_product_category"] = "$project[name] category"; } return $standard_attributes; } }