Nota importante: Para el propósito de este artículo, utilizamos archivos de exportación de la plataforma comercial Yahoo MIV para importarlos en WooCommerce, pero las prácticas se pueden utilizar para cualquier exportación/importación en función de XLSX Note 2: Pruebe la importación en un sitio falso y Haga una copia de seguridad antes de hacerlo en vivo, porque es difícil de invertir, especialmente si importa miles de productos de WordPress, toman el mundo con asalto, ahora alimenta el 25% de la web.Detrás de este poderoso crecimiento ha aparecido una maravillosa solución de comercio electrónico … el complemento WoomOcommerce WordPress ahora lleva al mundo con asalto, un escaparate en línea consecutivo.WooCommerce es un complemento muy bien escrito y muy fácil de usar, pero lo que realmente lo diferencia es su extensibilidad.
No entraré en el tema cómo se deriva WoCommerce de WP-Ecommerce (o simplemente … no importa), porque es irrelevante para este artículo, pero se creó WooCommerce para que sea posible expandirse y personalizar En mayo de muchas maneras. Sus desarrolladores Woothemes han creado cientos de complementos para TI, los métodos de envío de transportistas de todo el mundo, métodos de pago de Stripe, Alipay (China) y en todo el mundo y muchos otros que hacen cosas al permitir calcular el precio de acuerdo con el peso y el espectáculo. Muestras de selección de moda para cosas como ventanas de pantalla y muchas otras cosas. Además, hay cientos (si no miles) de otras extensiones de otras personas disponibles en línea de forma gratuita o por una tarifa, y si alguien más aún no lo ha construido, puede construirlas solas o contratar a alguien para que lo haga. Esta es una de las principales razones por las cuales WooCommerce se convierte en la solución comercial electrónica número uno en el planeta.
Entonces, por supuesto, muchas personas que dirigen tiendas en línea están ansiosas por venir al lado de WP y trasladar su sitio a WordPress, si aún no está allí, y configuran su tienda en WooCommerce. Para la mayoría, esto no es demasiado difícil. Ya existe la extensión del suite de importación CSV WooCommerce (coma) de Woothemes, que le permite asignar campos de datos CSV desde el archivo de exportación de CSV, al campo WooCommerce, como guardar item_number desde la tienda en SKU en Woo. Woo hoo. Pero para otros esto no es posible por una razón u otra. Uno de esos casos es aquellos que intentan moverse de la plataforma Yahoo MIV y la razón es el doble: el archivo de exportación es un archivo XLSX que no se puede analizar como CSV y B: porque usan códigos de categoría para sus categorías, en WordPress es la categoría de ID y babosas. Como resultado, su exportación se divide en dos archivos XLSX, uno para productos, que contiene referencias solo a los códigos de categoría y luego otro archivo con los códigos de categoría, que le brinda el nombre de la categoría apropiada, etc.
Parte de mi papel como desarrollador de casas es ayudar a los contratistas cuando lo necesiten. La semana pasada, uno de nuestros contratistas permaneció detrás de un trabajo porque se dio cuenta de que no podía usar la extensión de importación de Woothemes para importar productos de la tienda Miva de su cliente en la nueva tienda de WooCommerce que les creó. La causa de lo anterior y él No tuve tiempo para construir el importador personalizado al mismo tiempo que la construcción del sitio. Así que vine a hacer estos productos importar al WooCommerce para él. Muchas veces quería probar el complemento de importación WP All, pero no tuve tiempo de aprender algo nuevo, así que fui con lo que sé y construí un complemento de análisis CSV personalizado para analizar el 2. CSV e importar los productos y categorías de estos en WordPress. Para mi próximo artículo, haré la misma importación, pero utilizando el complemento WP All Import y su función para permitirle incorporar funciones de PHP personalizadas para su uso. Obtener archivos (cargador o …). Tenga en cuenta que puede hacerlo puro y simple Para alojar las hojas en Google Drive o OneDrive o cualquier otra solución en la nube, o su propio servidor y simplemente editar archivos PHP para usar URL si lo desea, pero sé cómo codificar el programa de carga de WordPress, para que sea el enfoque que tomé. Realmente no es parte de este tutorial, por lo que si desea averiguar cómo puede agregar la herramienta de carga de WordPress, entonces esta es la forma en que lo hicimos: http://webomnizz.com/how-to-use-wordpress- cardador -In -the OT/
Necesitará una página para que el cargador continúe y puede agregar esto de la siguiente manera: // gancho en el admin_men con la función agregando la página add_action (‘admin_men’, array ($ this, ‘setup_page’)); Ahora para agregar la página: pondré los parámetros uno en la línea y le diré lo que cada función setup_page () {add_submen_page (‘edit.php’, // título de enlace en el menú ‘csv anal de la página ‘manage_wooCommerce’, // El nivel de permiso necesario para ver la página ‘parse_csv’, // la slug (page = slug) en la matriz de url ($ this, ‘uploader_page’) // la función se ejecuta cuando la página se ve ); } En la función Supeader_Page pondrá el formulario en el tutorial anterior. En esa posición, agregué 2 campos de entrada separados con botones de carga al lado de ellos, uno etiquetado para la hoja de computación del producto y otro para categorías, cuando el usuario seleccionó o cargó el archivo usando el cargador insertó el archivo del archivo en el campo de la introducción . Luego tenía un botón de envío para enviar las URL del archivo.
Procese los datos y ahora, finalmente, analizaremos esos archivos … A medida que enviemos un formulario, podemos conectarnos a admin_init thook de la siguiente manera: add_action (‘admin_init’, array ($ this, ‘pars_xlsx_files’)); Y la función es la siguiente: la función PARS_XLSX_FILES () { / *verifique si nuestro formulario Water *Subt_CCSVP_CSVS es el atributo de nombre = “” del botón Enviar en los archivos * / if (isset ($ _ post [‘Subt_CSVP_CSVS’)))) {$ this-> extract_data (); $ this-> build_categories (); $ this-> map_data (); $ this-> import_products ($ productos); }} Paso 1: Extraiga los datos de XLSX para que pueda ver que los dividí en otras 4 funciones de simplicidad, por lo que ahora cubriré uno por uno. { / * Cuando cargue archivos XLSX en wp solo obtiene el nombre de archivo en Su campo de texto, por lo tanto, dado * y el hecho de que algunas configuraciones de servidor no se encuentran para acceder a los datos de la URL, opté * para usar la ruta, por lo que primero obtenemos el parche */ $ uploads = wp_upload_dir (); $ PATH = $ SOBLODS [‘Patch’]; // Luego usamos la ruta con las variables postales (los nombres de archivo) enviados a través de nuestro formulario $ this-> productos = $ this-> pars_xlsx ($ path. “/”. $ _Post [‘Products_csv’]. “.Xlsx” ); $ this-> catsandsubcats = $ this-> pars_xlsx ($ path. “/” $ _post [‘catassubcats_csv’]. “.xlsx”); } Tenga en cuenta el uso de la función parse_xlsx. Esta característica provino de https://gist.github.com/searbe/3284011-take El archivo XLSX (que es un formato de aplicación) extrae los datos y los coloca en una matriz codificada por los encabezados de la columna. Lo cambié un poco al final:
Donde construye el giro (líneas 57 y 58) guardamos las filas en una matriz de la siguiente manera: $ valores = array_pad ($ arr, count ($ encabezados), ”);$ row = array_bombine ($ encabezados, $ valores);$ date [] = $ row;Y luego, al final de la función, devuelvo la matriz de datos antes de eliminar el archivo: devolver $ fecha;@unlink ($ dir);@Unlink ($ inputfile);Paso 2: Cree las categorías ahora que tenemos los datos en una hermosa matriz, podemos usarlos.La siguiente función en nuestra función principal Process_Form es $ this-> build_categories (), que es la siguiente:
Function build_categories () {foreach ($ this-> catsandsubats como $ wp_key => $ valor) {$ this-> output [] = “comenzando en el término”. Print_r ($ valor, true); $ this-> output [] = “Comenzando en el término”. Print_r ($ valor, true); // No intente e insertar categoría sin texto, ya que obtendrá una categoría de número horrible si (vacía ($ ‘parent_name’))))) continúe; // No lo inserte si ya tiene // la función de inserción evitaría duplicados de todos modos, pero esto ahorra tiempo de procesamiento (! Term_exists ($ valor xlsx // comenzando con los términos principales solo $ termin_id = wp_insert_term ($ valor [ ‘Parent_name’], ‘product_cat’, array (‘descripción’ => $ valor [‘mivate_category_code’); $ this-> output [] = “Termin”. $ Valor [‘parent_name’]. “Insertado con ID”. print_r ($ termin_id, true); } else {$ termin = get_term_by (‘name’, $ value [‘parent_me’], ‘product_cat’); $ termin_id = $ termin-> termin_id; $ this-> output [] = “Termina encontrada con ID”. print_r ($ termin_id, true); } // Cree una nueva categoría WP de asignación de matriz a Miva Cats para usar al analizar los productos $ this-> Cats [$ valor [‘miva_category_parent_code’] = $ valor [‘mivate_category_parent_code’]; // Ahora que tenemos el Termin_ID para el padre que lo usa para insertar la categoría de hijo $ child_id = wp_insert_term ($ valor [‘subcategory_me__’], ‘product_cat’, array (‘description’ => $ valor [‘miva_category_ode’],], ,,, ‘parent’ => $ termin_id)); // nuevamente ahorrándolo en la matriz $ this-> gats [$ valor [‘miva_sub_category_code’] = $ valor
sub_category_name__ ‘]; $ this-> output [] = “Insertar el término infantil”. $ Valor [‘sub_category_name__’]. “con el niño id =”. print_r ($ child_id, verdadero). “Y matriz =”. $ Term_id; } $ this-> output [] = “Category Build”; } Paso 3: Hart las claves de datos de exportación a WooCommerce/WordPress, por lo que ahora tiene todas sus categorías guardadas en WordPress en su jerarquía correcta. Ahora importaremos los productos, pero primero tenemos que elevar las teclas Matrix (los títulos de las columnas en MIV XLSX) a sus contrapartes WP. En su mayor parte, simplemente conecte la clave -> clave, pero en Meta_fields algunos metadatos para WooCommerce que no están en MIV Export, por lo que para aquellos simplemente usan Enter_Value :: Value y envíe el valor. “::” nos da algo para identificarlos, para que podamos ingresar el valor. También tenemos function_fields para los cuales la clave es el nombre de una función que llamamos y transmitimos datos de MIV.
función map_data () {$ this-> meta_fields = array (‘_sku’ => ‘product_code’, ‘_downloadable’ => enter_value :: no ‘,’ _virtual ‘=> enter_value :: no’, ‘_Visibility’ => ” enter_value :: visible ‘,’ _stock ‘=>’ enter_value :: 999 ‘,’ _stock_stock ‘=>’ enter_value :: insatock ‘,’ _backorders => enter_value :: no ‘,’ _manage_stock ‘=> enter_value :: sí’ , ‘_Price’ => ‘Price’, ‘_regular_price’ => ‘Price’, ‘_WC_COG_COST’ => COST ‘,);$ this-> post_fields = array (‘post_title’ => ‘product_name’, ‘post_excerpt’ => descripción ‘,’ post_content ‘=> descripción’,);$ this-> función} Paso 4: Importe los productos para que ahora, finalmente llegamos a la función import_products:
Function import_products () {foreach ($ this-> productos como $ header => $ valor) {// Primero construimos la matriz de datos de publicación para insertar $ post_data [‘post_type’] = “producto”; // No hubo llamadas de función en los datos de la publicación, por lo que es simple … foreach ($ this-> post_fields como $ wp_key => $ miva_key) {$ post_data [wp_key] = $ valor [$ miva_key]; } // Entonces verificamos si el producto existe primero y si lo hace, tomamos el ID $ post_id = $ this-> product_exist ($ ‘product_code’]); // Si lo hace en inserte y si es que tenemos que actualizarlo ($ post_id === false) {$ post_id = wp_insert_post ($ post_data); $ this-> output [] = “Post creado”. print_r ($ post_id, true); } else {$ this-> output [] = “actualizar post_id”; } // El meta_fields solo tiene la función enter_value, por lo que nosotros … foreach ($ this-> meta_fields como $ wp_key => $ miva_key) {// verificar la cadena “::” que mencionamos if (strstr ($ miva_key, “::”)) {// Si se encuentra, divídalo en “::” $ Parts = Explode (“::”, $ miva_key); // $ Party es ahora Array (0 => ‘Enter_Value’, 1 => $ valor); // luego ahorre update_post_meta ($ post_id, $ wp_key, $ piezas [1]); } Else {// If No “::” Entonces es solo una fecha directa de la matriz produce usando el miva_key update_post_meta ($ post_id, $ wp_key, $ valor [$ miva_y]); }} wp_set_object_terms ($ post_id, ‘simple’, ‘product_type’, falso); Foreach ($ this-> function la URL de la tienda MIV) // ya que el archivo XLSX solo contiene la ruta. If ($ miva_key == ”
Image_url “) $ value [$ miva_key] = trailingslashit (sitio_url (). BaseName ($ valor [$ miva_key]); // Luego llamamos la función y pasamos en el post_id y el valor miva $ this-> {wp_key} (( $ post_id, $ valor [$ miva_key]);}}} Entonces, a partir de los datos del mapa tenemos las siguientes funciones que se han utilizado anteriormente.

// Compruebe los errores de mijeción. if (is_wp_error ($ id)) {@unlink ($ file_array [‘tmp_name’]); devolver $ id; } update_post_meta ($ post_id, ‘_thumbnail_id’, $ id); $ this-> output [] = “$ image_url save to $ post_id con image_id $ id”; }
Esto toma el valor de la columna activa en MIV y lo usa para establecer Post_status WordPress de la siguiente manera : Function get_status ($ post_id, $ activo) {$ post_status = $ activo == 1? “Publicar”: “borrador”; if ($ post_status! = get_post_status ($ post_id)) {wp_update_post (array (‘id’ => $ post_id, ‘post_status’ => $ post_status)); }} Finalmente, puede elegir tener una salida para que sepa que todo ha funcionado. Hemos creado una serie de resultados en el código anterior, por lo que solo puede parse_xlsx_files: function pars_xlsx_files () {if (isset ($ _ post [‘subt_ccsvp_csvs’)) {$ this-> extract_data (); $ this-> build_categories (); $ this-> map_data (); $ this-> import_products (); Echo Implode (”
“, $ this-> output);
homefinance blog