WooCommerce United Furniture
Custom WordPress plugin for United Furniture WooCommerce catalog, dealer registration, product import, inventory synchronization, Google Drive image syncing, and Elementor product widgets.
by Asif Rasheed · github.com/asifrasheedprovelopers/wc-united-furniture
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/asifrasheedprovelopers/wc-united-furniture/archive/refs/heads/master.zipReadme
WooCommerce United Furniture
Custom WordPress plugin for United Furniture WooCommerce catalog, dealer registration, product import, inventory synchronization, Google Drive image syncing, and Elementor product widgets.
Requirements
- WordPress
- WooCommerce
- Elementor, for the included product/category widgets
- Advanced Custom Fields, where ACF-backed fields are used
- Google API PHP client dependencies in
google-drive/vendorfor Drive image sync - Dompdf/FPDI dependencies in
modules/vendorandmodules/ufie/vendorfor PDF-related dealer application flows
Main Features
- Adds a
Dealeruser role (wuf_dealer) on activation. - Hides WooCommerce pricing and purchase actions from guests.
- Applies dealer-specific markup using the
wuf_user_markup_valueuser meta field. - Adds dealer registration, dealer dashboard, product search/filter, and supporting shortcodes.
- Adds WUF Store admin pages for settings, dealers, product import, inventory refresh, and Google Drive image syncing.
- Imports product catalog data from CSV into WooCommerce products.
- Creates and updates grouped products from imported
Page IDdata. - Syncs bundle/composition stock and prices from component SKU inventory.
- Stores product metadata such as dimensions, carton dimensions, MOQ, case pack quantity, collection, romance sorting values, image URLs, and page features.
- Adds a custom
product_statustaxonomy for collection/status style filtering. - Adds Elementor widgets for United Furniture products and categories.
- Adds custom WooCommerce catalog sorting and product display behavior.
- Supports Google reCAPTCHA keys for dealer registration.
- Supports Google Drive OAuth settings and product image sync from imported image URLs.
Admin Pages
After activation, the plugin adds a top-level WUF Store menu.
- WUF Store: General plugin settings, reCAPTCHA keys, upload limits, import behavior, and manually selected home page products.
- WUF Dealers: Dealer listing, status management, application file access, email updates, account deletion, and activation email resend.
- WUF Import: CSV product importer.
- WUF Inventory: Manual inventory/price refresh for products with AMPSKU composition data.
- WUF Drive Images: Google Drive OAuth credentials and product image sync action.
CSV Import
The importer reads a CSV in the browser with Papa Parse, keeps rows where Item Status equals General, and sends the import to WordPress in small AJAX chunks.
Expected CSV columns include:
Item NameSKUItem Short DescriptionItem Long DescriptionWholesale PricePage IDAMPSKU CompositionMinimum Order QuantityCase Pack QuantityCategorySub-CategoryItem WidthItem LengthItem HeightCarton WidthCarton LengthCarton HeightVolumeItem StatusItem RomanceInventoryMSRPCollectionImages - SoloImages - OthersPage FeaturesImage UrlsPage RomanceItem WeightShipping Weight
When an imported SKU already exists, the product is updated. Otherwise, a new WooCommerce product is created. Imported products are published and stock-managed.
Grouped Products And Inventory
Products with matching Page ID values are grouped under a WooCommerce grouped product whose SKU is the Page ID. The plugin links grouped children through WooCommerce _children metadata, copies useful category/image/status metadata to the grouped product, and updates child parent metadata.
Products with AMPSKU Composition are treated as bundle/composition products. Inventory and price are calculated from component SKUs:
- Stock is the lowest available complete-set count from all component products.
- Price is the sum of component prices multiplied by their required quantities.
- Products are marked in stock or out of stock based on the calculated stock.
Dealer Workflow
The plugin creates a dealer role and supports active/inactive dealer status through dealer_user_status user meta.
- Inactive dealers are blocked from login.
- Guests cannot see pricing or add-to-cart actions.
- Dealers and administrators can see prices adjusted by their markup value.
- Dealer status changes can trigger WooCommerce customer account emails.
- Dealer records include uploaded store, EIN, registration application, and UFIE application files.
Google Drive Image Sync
The Google Drive settings page stores OAuth client ID, client secret, redirect URI, and an uploaded credentials.json file. Product image sync uses stored product image URLs and attaches images to WooCommerce products as featured/gallery images.
Do not commit real Google credentials. This repository ignores:
google-drive/credentials.json- Composer
vendordirectories - local backup files such as
* copy*and*_bk
Shortcodes And Widgets
The plugin includes shortcode files for dealer registration, dealer dashboard, product search/filter, and general WUF shortcodes. It also registers Elementor widgets under the United Furniture Elementor category:
- United Furniture Products
- United Furniture Product Categories
Installation
- Upload the plugin directory to
wp-content/plugins/wc-united-furniture. - Install required Composer dependencies for
modules,modules/ufie, andgoogle-driveif they are not already present on the target site. - Activate WooCommerce United Furniture in WordPress admin.
- Configure settings under WUF Store.
- Configure Google Drive credentials only on the target environment, not in source control.
Development Notes
- Keep site credentials and generated dependency folders out of Git.
- Test imports on a staging copy before running against production products.
- The importer can remove unmatched products when that setting is enabled, so confirm the CSV contains the complete intended catalog before using that option.