Ürünleri XLSX’ten Wooocommerce’a nasıl içe aktarılır
Önemli Not: Bu makalenin amacı için, WooCommerce’a içe aktarmak için Yahoo Miva Satıcı Platformundan dışa aktarma dosyalarını kullandım, ancak uygulama XLSX’e dayalı ihracat/ithalat için kullanılabilir Önemli Notlar 2: Lütfen kukla sitedeki ithalatları test edin, Ve doğrudan yapmadan önce yedekler alın, çünkü özellikle dünyada binlerce WordPress ürünü içe aktarırsanız, şimdi web’in% 25’ini destekliyor.Güçlü dirilişin arkasında olağanüstü bir e-ticaret çözümü ortaya çıktı … WooCommerce WordPress eklentisi artık dünyayı tek tek çevrimiçi mağaza şok ediyor.WooCommerce çok iyi yazılmış harika bir eklentidir ve kullanımı çok kolaydır, ancak bunu ayırt eden şey onun genişletilebilirliğidir.
Woocommerce’in WP-Ec-E-Ecommerce’den nasıl türetildiği hakkında tartışmayacağım (ya da sadece … sorun değil) çünkü bu makale ile ilgili değil, ancak genişlemeyi ve ayarlamayı çeşitli şekillerde etkinleştirmek amacıyla inşa edildi. . Geliştirici Woothemes, bunun için yüzlerce eklenti, dünyanın dört bir yanındaki operatörlerden dağıtım yöntemi, çizgilerden Alipay’a (Çin) ve dünyada ödeme yöntemleri oluşturdu ve daha pek çok şey ağırlığa dayalı fiyat hesaplamalarına izin vermekten daha fazlasını yapıyor ve daha pek çok şey yapıyor. Duvar kağıdı mağazaları ve diğer birçok şey için seçmen modunda örnek renkler dışında. Buna ek olarak, ücretsiz veya ücretli olarak çevrimiçi olarak mevcut olan diğer insanlar tarafından yüzlerce (binlerce değilse) başka bir uzatma vardır ve diğer insanlar bunu yapmadıysa, bunu kendiniz yapabilir veya bunu yapmak için birisini kiralayabilirsiniz. Bu, WooCommerce’in gezegendeki bir numaralı e -ticaret çözümü olmasının ana nedenlerinden biridir.
Tabii ki çevrimiçi mağazalar işleten birçok kişi WP tarafına gelmek ve yoksa sitelerini WordPress’e taşımak ve mağazalarını WooCommerce’de hazırlamakla ilgileniyor. Çünkü bunların çoğu çok zor değil. CSV veri alanlarını mağazanızdan CSV dosyalarınızdan dışa aktarmak için mağazanızdan csv veri alanlarını eşdeğer alanla eşleştirmenize olanak tanıyan Woothemes’den Woocommerce CSV (virgülle ayrılan değerler) ithalat paketinin bir uzantısı var, örneğin öğeleri depolamak gibi öğeler var. Woo’da SKU’ya depolayın. Woo hoo. Ancak diğerleri için bu bir nedenden dolayı mümkün değildir. Bu vakalardan biri, Yahoo Miva platformundan hareket etmeye çalışanlardır ve bunun nedeni iki tane olmasıdır: Dışa aktarma dosyaları, CSV ve B gibi açıklanamayan XLSX dosyalarıdır: çünkü kategorileri için kategori kodlarını kullanırlar, çünkü. WordPress’te bir kategori kimliği ve salyangozdur. Sonuç olarak, dışa aktarmaları, sadece kategori koduna referanslar içeren ürün için biri olan iki XLSX dosyasına ve ardından kategori kodundan size uygun kategori adını veren diğer dosyalara ayrılır.
Ev geliştiricisi olarak rolümün bir kısmı, yükleniciye ihtiyaç duyduklarında yardımcı olmaktır. Geçen hafta, yüklenicilerimizden biri işini yapmak için geç kaldı çünkü Woothemes ithalatının genişletilmesini, müşterinin müvekkilinin Miva mağazasından ithal etmek için yukarıdakiler nedeniyle onlar için inşa ettiği yeni bir parlak wooCommerce mağazasına kullanamayacağını fark etti. ve site oluşturmayı tamamlamakla aynı zamanda özel ithalatçılar inşa etmek için zamanı yoktu. Bu ürünü onun için WooCommerce’a aktarmaya geldim. Uzun zamandır WP All Import eklentisini denemek istedim, ancak burada yeni bir şey öğrenmek için zamanım yok, bu yüzden bildiğim şeyleri kullanıyorum ve özel bir CSV ayrışması eklentisi 2 CSV’yi parçalamak ve ithal etmek için yapılmış ve ürünleri ve kategorileri içe aktarıyorum WordPress’e. Bir sonraki makalem için, aynı içe aktarmayı yapacağım, ancak WP All Import eklentisini ve ithalat sırasında kullanılmak üzere özel PHP işlevlerini yerleştirmenizi sağlayan özelliklerini kullanacağım.
Bir dosya alın (yükleyici veya …) Lütfen Google Drive veya OneDrive veya diğer bulut çözümlerinde e -tabloları barındırabileceğinizi ve kendi sunucunuza sahip olabileceğinizi ve isterseniz URL’leri kullanmak için PHP dosyalarını düzenleyebileceğinizi, ancak nasıl yapacağınızı biliyorum. WordPress yükleyici kodu, böylece yaklaşım.Bu aslında bu öğreticinin bir parçası değil, bu yüzden bir WordPress yükleyicisi nasıl ekleyebileceğinizi öğrenmek istiyorsanız, bunu yaptığım yol: http://webomnizz.com/how-tos-use-wordpress-uploader-into -Tema-anda/Yükleme için bir sayfa gerekir ve şöyle ekleyebilirsiniz:
// Add_ace (‘admin_menu’, dizi ($ this, ‘setup_page’)) sayfasını ekleyen işlevle admin_menu kancasına takın; Şimdi sayfa eklemek için-I satır başına bir parametre yerleştirecek ve her birinin setup_page () {add_submenu_page (‘edit.php? Post_type = ürün’, // ne yaptığını söyleyin, // Bu, ‘CSV Parse’ ürün bağlantısı altına eklenecektir. , // ‘CSV Parser’ menüsündeki bağlantı başlığı, // ‘manage_wooocommerce’ sayfasının başlığı, // izin seviyesinin ‘parse_csv’ sayfasını görüntülemesi gerekiyor ($ ‘ Bu, ‘uploader_page’) // sayfa görüntülendiğinde işlev çalıştırılır); } Uploader_page’de formu yukarıdaki bağlantılı öğreticiden koyacaksınız. Bu işlevde, yanında yükleyici düğmesi olan, biri ürün e -tabloları için etiketlenmiş 2 ayrı giriş alanı ekledim, diğeri kategori için, kullanıcı yükleyicileri kullanarak dosyaları seçtiğinde veya yüklediğinde, URL dosyasını giriş alanına girer. Daha sonra bir dosya URL’si göndermek için bir gönder düğmem var.
Verileri işleme ve şimdi dosyaları parçalayacağız … form gönderdiğimizde admin_init’in kancalarına bağlanabiliriz: add_action (‘admin_init’, dizi ($ this, ‘parse_xlsx_files’));Ve işlevi aşağıdaki gibidir: işlev parse_xlsx_files () { / *Formumuzun gönderilip gönderilmediğini kontrol edin *Submfsvp_csvs Name = “” Dosyalar formundaki gönderme düğmesinin özelliği * / if (isset ($ _ post [‘Submfsvp_csvs’ ‘ ])) {$ this-> extract_data ();$ this-> Build_categories ();$ this-> map_data ();$ this-> ithalat_products ($ ürünler);}} Adım 1: XLSX’ten veri çıkarın, böylece basitlik için 4 işleve ayrıldığımı görebilirsiniz, bu yüzden şimdi tek tek tartışacağım.
Veri Çıkarma işlevi çok basit: Function Extract_Data () { / * WP’ye XLSX dosyalarını yüklediğinizde, yalnızca metin alanınızdaki dosya adını alırsınız, bu nedenle * ve bazı sunucu yapılandırmalarının PHP’nin erişmesine izin vermemesi göz önüne alındığında Bir url’den veriler, yolu kullanmayı seçtiğim * önce yolu kullanmayı tercih ettiğim için */ $ uploads = wp_upload_dir (); $ yol = $ uploads [‘yol’]; // Sonra yolunu $ this-> ürünler = $ this-> $ yol. “/”. $ _post [‘ürünler_csv’]. “); $ this-> catsandsubcats = $ this-> parse_xlsx ($ yol. } Parse_xlsx işlevinin kullanımına dikkat edin. Bu işlev https://gist.github.com/searbe/3284011 – bir XLSX dosyası (MS uygulama biçimidir) verileri çıkarır ve sütun başlığı tarafından kilitlenmiş bir diziye ekler. Sonunda biraz değiştirdim: Satırlar inşa etti (57 ve 58 satırlar) şöyle diziler halinde çizgiler tuttum: $ değerler = array_pad ($ arr, count ($ başlıklar), ”); $ row = array_combine ($ başlıklar, $ değerler); $ data [] = $ satır; Ve sonra işlevimin sonunda dosyayı silmeden önce veri dizisini döndürüyorum: $ data; @unlink ($ dir); @unlink ($ inputFile); Adım 2: Kategoriyi Oluşturma Şimdi iyi bir dizide verilerimiz var, kullanabiliriz. Ana Process_form işlevimizin bir sonraki işlevi $ this-> Build_categories (), ki şu şekildedir:
Function Build_categories () {foreach ($ this-> catsandsubcats $ wp_key => $ değer) {$ this-> output [] = “terimden başlama”. print_r ($ değer, true); $ this-> output [] = “Dönem başlayarak”. print_r ($ değer, true); // Sizin gibi metin olmadan kategorileri denemeyin ve eklemeyin, o zaman (boş ($ değer [‘parent_name’]))) devam ederse korkunç sayı kategorileri alırsınız; // Zaten varsa eklemeyin // Ekleme işlevi kopyaları yine de önleyecektir, ancak (! Term_exists ($ değer [‘parent_name’]) {// Değerleri kullanarak terimi ekleyin. Xlsx // ana terimlerle başlayarak yalnızca $ term_id = wp_insert_term ($ değer [‘parent_name’], ‘ürün_cat’, dizi (‘açıklama’ => $ değer [‘MIVA_CATATORY_PARENT_CODE’])) $ this-> output [] = “terim”. $ değer [‘parent_name’]. “Kimlik ile yerleştirildi”. print_r ($ term_id, true); } else {$ term = get_term_by (‘name’, $ değer [‘parent_name’], ‘ürün_cat’); $ term_id = $ term-> term_id; $ this-> output [] = “Kimlik ile Bulundu”. print_r ($ term_id, true); } // Ürünleri ayrıştırırken Miva CAT kodlarına yeni bir dizi eşleme WP kategorileri oluşturun $ this-> cats [$ değer [‘MIVA_CATEGORY_PARENT_CODE’]] = $ değer [‘MIVA_CATEGORY_PARENT_CODE’]; // Şimdi ebeveyn için term_id’e sahip olduğumuza sahip olduğumuza göre $ child_id = wp_insert_term = wp_insert_term = wp_insert_term (‘sub_category_name__’], ‘product_cat’, dizi (‘açıklama’ => $ değer [‘Miva_sub_category_code’],,, ‘Ebeveyn’ => $ term_id)); // Yine $ this-> cats [$ değer [‘Miva_sub_category_code’]] = $ değer [‘
sub_category_name__ ‘];$ this-> output [] = “Çocuk terimi ekleme”.$ değer [‘sub_category_name__’].”Çocuk Kimliği ile =”.print_r ($ child_id, true).”Ve ebeveyn =”.$ term_id;} $ this-> output [] = “Üretilen kategoriler”;} Adım 3: Veri tuşunu dışa aktarmadan WooCommerce/WordPress’e takın, böylece tüm Miva kategorilerinizi doğru hiyerarşide WordPress’e saklayın.Şimdi ürünü içe aktaracağız, ancak önce anahtar dizisini (Miva XLSX sütununun başlığı) WP meslektaşlarına eşlememiz gerekiyor.Çoğunuz için anahtar -> tuşunu bağlayın, ancak Meta_Fields’te MIVA’nın dışa aktarmasında olmayan wooCommerce için bazı meta veriler gereklidir, bu nedenle sadece enter_value :: değer kullanmamız ve değeri göndermemiz gerekir.”::” Değeri girebilmemiz için bunu tanımlamamız için bize bir şeyler veriyor.Ayrıca, anahtarı dediğimiz işlevin adı olan ve Miva’dan veri verdiğimiz func_fields var.
İşlev map_data () {$ this-> meta_fields = array (‘_sku’ => ‘ürün_code’, ‘_downloadable’ => ‘enter_value :: no’, ‘_virtual’ => ‘enter_value:>’ enter_value :: görünür ‘ , ‘_stock’ => ‘enter_value :: 999’, ‘_stock_status’ => ‘enter_value :: instock’, ‘_backorders’ => ‘enter_value :: hayır’, ‘_manage_stock’> ‘=>’ => ‘= > ‘=>’ => ‘=>’ => ‘=>’ Enter_value :: evet ‘,’ _price ‘=>’ fiyat ‘,’ _regular_price ‘=>’ fiyat ‘,’ _wc_cog_cost ‘=>’ maliyet ‘, );$ this-> post_fields = array (‘post_title’ => ‘ürün_adı’, ‘post_excerpt’ => ‘açıklama’, ‘post_content’ => ‘açıklama’,);$ this-> func_fields = array (‘map_categories’ => ‘category_codes’, ‘save_images’ => ‘image_url’, ‘get_status’ => ‘aktif’,);} Adım 4: Bitmiş ürünü şimdi içe aktarın, son olarak Import_Products işlevine varıyoruz:
Function Inthrient_products () {foreach ($ this-> ürünler $ header => $ value) {// Öncelikle $ ekleme için posta veri dizisini oluşturuyoruz $ post_data [‘post_type’] = “ürün”; Post veri alanlarında hiçbir işlev çağrısı yoktu, bu yüzden basit … foreach ($ this-> $ wp_key => $ miva_key olarak) {$ post_data [$ wp_key] = $ değer [$ miva_key]; } // Bu yüzden ürünün önce var olup olmadığını kontrol ediyoruz ve eğer yaparsa $ post_id = $ this-> ürün_exists ($ value [‘ürün_code’]); // eğer eklemezsek ve eğer varsa ($ post_id === yanlış) {$ post_id = wp_insert_post ($ post_data); $ this-> output [] = “Gönderi Oluşturuldu”. print_r ($ post_id, true); } else {$ this-> output [] = “$ Post_id” postasını güncelleme; } // meta_fields yalnızca enter_value işlevine sahiptir, bu yüzden biz … foreach ($ this-> $ wp_key => $ miva_key olarak) {// “::” dize daha önce bahsettiğimiz (strstr ($ miva_key , “::”) {// Bulunursa “::” $ parts = patlama (“::”, $ miva_key) ‘e bölün; // $ parçalar artık dizidir (0 => ‘enter_value’, 1 => $ değer); // daha sonra update_post_meta ($ post_id, $ wp_key, $ parçalar [1]) kaydet; } else {// ise “::” o zaman miva_key update_post_meta ($ post_id, $ wp_key, $ değer [$ miva_key]) kullanılarak ürün dizisinden verilerin sadece düz bir şekilde kaptırır; }} wp_set_object_terms ($ post_id, ‘basit’, ‘ürün_type’, false); Foreach ($ this-> func_fields olarak $ wp_key => $ miva_key) {// site_url (), sitenizin URL’sini veren bir WP işlevidir, eğer yeni bir etki alanına içe aktarıyorsanız // o zaman önceki URL’yi eklersiniz ( ) Miva mağazasının URL’si) // XLSX dosyası olarak yalnızca yolu içerir. if ($ miva_key == ”
Image_url “) $ value [$ miva_key] = TrailingsLashite (site_url (). Basename ($ değeri [$ miva_key]); // Sonra işlevi ararız ve Post_ID’den ve Miva $ this-> {$ wp_key’den değer veririz } ($ post_id, $ değer [$ miva_key]);}}}} Yani harita veri işlevinden yukarıda kullanılan aşağıdaki işlev var. Yalnızca ürün verileri kategorisini kullanarak WP kategorisini alır ve bunu bulur. Daha önce kaydettik ve daha sonra gönderiyi (ürün) bu kategoriye kaydeddik. MAP_CATECTORY ($ Post_ID, $ kodlar) {$ set_terms = array (); foreach (patlama (“,”, $ kodlar) {if. (! Isset ($ this-> kedi [$ kod])) {$ this-> output [] = “boya $ kod bulunamadı”;} else {$ set_terms [] = $ this-> cats [$ kod]; }} $ this-> output [] = “ayar”. print_r ($ set_terms, true). “ila $ post_id”; if (! boş ($ set_terms)) wp_set_object_terms ($ post_id, $ set_terms, ‘ürün_cat’, false );}
‘save_images’ => ‘image_url’
Evet Bu ng, yolcu görüntüsü URL’sini alır ve ekleme sonrası ek olarak saklar. Ürün başına sadece 1 resim çünkü biz de üstün bir görüntü yapıyoruz. Function sour_images ($ post_id, $ url) {$ tmp = download_url ($ url); $ file_array = array (‘name’ => baseame ($ url), ‘tmp_name’ => $ tmp); $ this-> output [] = “Image $ url” üzerinde başlama “. print_r ($ file_array, true); // (is_wp_error ($ tmp)) {@unlink ($ file_array [‘tmp_name’])); Dönüş $ TMP; } $ id = media_handle_sideload ($ file_array, $ post_id); $ this-> output [] = “Sideload ele alındı:”. print_r ($ id, true);
// Sandalı yük hatalarını kontrol edin. if (is_wp_error ($ id)) {@unlink ($ file_array [‘tmp_name’]); $ ID döndür; } update_post_meta ($ post_id, ‘_thumbnail_id’, $ id); $ this-> output [] = “$ image_url $ post_id ile image_id $ id”; }
ve son … ‘get_status’ => ‘aktif’ Bu, MIVA’nın aktif sütun değerini alır ve Post_Status WordPress gibi ayarlamak için kullanır: işlev get_status ($ post_id, $ aktif, $ aktif) {$ Post_status = $ Active == 1? “Yayınla”: “Taslak”; if ($ post_status! = get_post_status ($ post_id)) {wp_update_post (array (‘id’ => $ post_id, ‘post_status’ => $ post_status)); }}
Son olarak, tüm bunların işe yaradığını bilirsiniz, böylece birkaç çıktıya sahip olmayı seçebilirsiniz. Yukarıdaki kodda bir çıkış dizisi yaptım, bu yüzden yalnızca parse_xlsx_files: işlev parse_xlsx_files () {if ($ _ post [‘stive_ccsvp_csvs’])) {$ this-> ekstract_data (); $ this-> Build_categories (); $ this-> map_data (); $ this-> ithalat_products (); echo improde (“
“, $ this-> çıktı);