{CODICTS} Snippets is now available

MyListing Products Listing Maker

The {CODICTS} MyListing Products Listing Maker plugin creates a bidirectional sync bridge between WooCommerce products and MyListing listings. When a WooCommerce product is created or updated, a corresponding MyListing listing is automatically generated. When a listing is saved — from the admin or frontend form — the linked WooCommerce product is created or updated. This lets you use MyListing’s Explore page, search filters, and listing templates to display and sell products, while WooCommerce handles cart, checkout, and order management.

The plugin supports Simple and Variable product types, provides an AJAX add-to-cart shortcode, a Product Price Range filter for the Explore page, price sorting, and full ACF (Advanced Custom Fields) compatibility.

Installation & Activation

Start by downloading the plugin from the Downloads page on your dashboard on the CoDicts website.

After downloading, install and activate the plugin in WordPress by navigating to “Plugins” > “Add New” > “Upload Plugin” and selecting the downloaded zip file. Click “Install Now” and then “Activate”.

On activation, the plugin automatically copies template files into your child theme directory and adds a new menu item in the WordPress admin sidebar for the settings page.

Important: The MyListing theme, a MyListing child theme, and WooCommerce must all be active. If any dependency is missing, an admin error notice will appear and functionality is disabled.


Key Features

FeatureDescription
Bidirectional SyncAutomatically creates/updates a listing when a product is saved, and vice versa. Works from both admin and frontend.
Simple & Variable ProductsFull support for Simple products (single price/SKU/stock) and Variable products (multiple variations with their own prices, SKUs, stock, and images).
{C} Product Listing FieldA custom MyListing field that renders a comprehensive product management UI in the listing submission form.
AJAX Add-to-Cart ShortcodeRenders an add-to-cart button with quantity selector, variable product dropdowns, and animated cart feedback.
Product Price Range FilterA custom Explore page filter for filtering listings by product price using a range or single slider.
Price SortingSort listings by product price on the Explore page.
Status SyncStatus changes (publish, draft, trash) are mirrored between linked products and listings.
ACF CompatibilityAutomatically syncs Advanced Custom Fields data between products and listings when field names match.
Bulk ResyncOne-click button to generate listings for all existing WooCommerce products.
Dynamic TagsUse [[codicts-product.price]] and [[codicts-product.stock]] in listing templates and preview cards.

Settings Page

After activation, the plugin adds a {CODICTS} MyListing Products Listing Maker menu item in the WordPress admin sidebar. The settings page has the following options:

SettingDescription
Products listing typeSelect which MyListing listing type will be used for product-listing sync. All synced products will become listings of this type.
Sync delete status?When checked, trashing a listing also trashes the linked WooCommerce product. When unchecked, deleting a listing does not affect the product. Product → Listing delete sync always works regardless of this setting.
Resync product listingsA one-time action. When checked and saved, the plugin iterates through all existing Simple and Variable products and creates or updates their linked listings. Use this if you have existing products from before the plugin was installed.

Note: The “Resync product listings” checkbox does not save as a setting — it only triggers the resync operation when the form is submitted.


Setting Up a Product Listing Type

1. Go to MyListing → Listing Types and create a new listing type (e.g., “Products”) or edit an existing one.

2. Add the following fields to the listing type:

Recommended FieldPurpose
DescriptionMaps to the WooCommerce product description.
Cover ImageMaps to the product featured image.
Gallery ImageMaps to the product gallery images.
{C} Product ListingThe custom product field — required for product data (prices, SKU, stock, variations).

3. Save the listing type.

4. Go to the plugin’s settings page and select this listing type from the “Products listing type” dropdown.

5. Save changes.

The bidirectional sync is now active. Products created in WooCommerce will automatically get listings, and listings saved with the product field will automatically create WooCommerce products.


The {C} Product Listing Field

This custom field renders a product management interface on the add/edit listing form (both admin and frontend). It’s divided into two sections based on the selected product type.

Simple Product Fields

FieldDescription
Product TypeDropdown to select “Simple Product” or “Variable Product.”
Regular priceThe standard product price. Displays your WooCommerce currency symbol.
Sale priceThe discounted price. Must be less than or equal to the regular price.
SKUStock Keeping Unit identifier.
Manage stock?Toggle stock quantity management. When enabled, shows Stock quantity, Allow backorders, and Low stock threshold fields.
Stock quantityAvailable stock count (visible when Manage stock is on).
Allow backorders?Do not allow / Allow but notify / Allow (visible when Manage stock is on).
Low stock thresholdTriggers a low-stock notification (visible when Manage stock is on).
Stock statusIn stock / Out of stock / On backorder (visible when Manage stock is off).
Sold individuallyLimit purchases to 1 item per order.

Variable Product Fields

When “Variable Product” is selected, a repeater field appears where you add product variations. Click “Add variation” to create entries. Each variation contains:

FieldDescription
Variation nameAttribute names separated by pipes. Example: color | size
ValueAttribute values separated by pipes, matching the names. Example: red | medium
Regular priceThis variation’s regular price.
Sale priceThis variation’s sale price.
DescriptionDescription specific to this variation.
Product imageImage specific to this variation.
SKUVariation-specific SKU (must be unique).
Stock fieldsSame stock management options as Simple products, but per variation.

Creating Simple Products

You can create a product-listing pair from either side:

From the listing side:

1. Create a new listing of the configured listing type.

2. Fill in the title (becomes the product name), description (becomes the product description), cover image (becomes the featured image), and gallery.

3. In the {C} Product Listing field, select “Simple Product.”

4. Enter the regular price and optionally a sale price. Configure inventory settings as needed.

5. Save the listing — a WooCommerce product is automatically created and linked.

From the product side:

Create a Simple Product in WooCommerce → Products — a linked listing is automatically created when the product is saved.


Creating Variable Products

Variable products use a pipe-delimited syntax to define attributes and their values. Each variation entry has a “Variation name” and “Value” field where attributes and values are separated by the pipe character (|).

1. Create a listing and select “Variable Product” as the product type.

2. Click “Add variation” to add variation entries.

3. For each variation, enter the attribute names and values using pipes:

Example: A clothing product with color and size variations:

Variation NameValueRegular Price
color | sizered | small29.99
color | sizeblue | medium34.99
color | sizegreen | large39.99

This creates a WooCommerce variable product with two attributes (color with values red/blue/green, and size with values small/medium/large) and three variations with their respective prices.

4. Set prices, stock, images, and SKUs per variation as needed.

5. Save the listing — the variable product with all variations is automatically created in WooCommerce.

Important: Attribute names and values must not contain the pipe character (|) as it’s used as the delimiter.


How Bidirectional Sync Works

The sync is fully automatic and works in both directions:

ActionResult
Create/update a WooCommerce productA linked MyListing listing is created or updated with the product’s title, description, images, price, SKU, and stock data.
Create/update a listing (admin or frontend)A linked WooCommerce product is created or updated with the listing’s data.
Trash a productThe linked listing is also trashed.
Trash a listingThe linked product is trashed only if “Sync delete status” is enabled in settings.
Change a product’s status (publish/draft)The linked listing’s status is updated to match.
Change a listing’s statusThe linked product’s status is updated (trash status follows the “Sync delete” setting).

What Gets Synced

DataProduct → ListingListing → Product
Title / Name
Description
Status
Author
Featured image✓ (to cover + logo)
Gallery images
Regular price
Sale price
SKU
Stock settings✓ (all inventory fields)✓ (all inventory fields)
Variations
ACF fields✓ (matching names)✓ (matching names)

Note: Only Simple and Variable product types are supported. If a product is changed to an unsupported type (Grouped, External, etc.), the linked listing will be trashed.


Shortcodes

Add-to-Cart Button

[codicts-mylisting-products-listing-maker::add-to-cart]

Renders an add-to-cart button for the WooCommerce product linked to the current listing. Includes a quantity selector, animated SVG cart feedback, and AJAX submission (no page reload).

AttributeDefaultDescription
idCurrent listing IDThe listing ID to get the product from.
button_label“Add to cart”Custom text for the button.
button_icon_onlyfalseWhen “true”, renders a compact icon-only button (hides quantity and label).

Usage examples:

<!-- Full add-to-cart on a listing page -->

[codicts-mylisting-products-listing-maker::add-to-cart]

<!– Icon-only button for preview cards –> [codicts-mylisting-products-listing-maker::add-to-cart id=[[:id]] button_icon_only=”true”] <!– Custom button label –> [codicts-mylisting-products-listing-maker::add-to-cart button_label=”Buy Now”]

Button Behavior by Product State

StateFull ModeIcon-Only Mode
In stock (Simple)Quantity input + cart buttonIcon-only circle button
In stock (Variable)Attribute dropdowns + quantity + cart buttonIcon-only circle button (no dropdowns)
Out of stock“Out of stock” textGreyed-out basket icon
Not purchasable / Not foundNothing renderedNothing rendered

Tip: For variable products, the icon-only mode does not show attribute dropdowns. Use it for simple products on preview cards, and use the full mode on listing pages where customers need to select variations.

Get Price (Legacy)

[codicts-mylisting-products-listing-maker::get-price]

Returns the price HTML of the linked product. This shortcode is largely replaced by the [[codicts-product.price]] dynamic tag.


Dynamic Tags & Modifiers

The plugin registers dynamic tags that can be used in listing page template blocks, preview cards, and anywhere MyListing supports the [[field]] syntax:

Dynamic TagOutput
[[codicts-product.price]]The product’s formatted price HTML, including sale price formatting (original price crossed out with the sale price shown).
[[codicts-product.stock]]Stock status text: “In stock”, “Out of stock”, or “On backorder”.

Use these in listing page block content, preview card templates, quick actions, or any MyListing template that supports dynamic tags.


Product Price Range Filter

The plugin provides a custom Explore page filter for filtering listings by product price.

Adding the Filter

1. Go to MyListing → Listing Types and edit your product listing type.

2. Navigate to the Search Forms (Explore) tab.

3. Add a new filter and select {C} Product Price Range.

4. Configure the filter:

OptionDescription
LabelDisplay label for the filter (e.g., “Price Range”).
TypeRange slider — user selects a min–max price range. Single slider — user selects a single price value.
BehaviorFor single slider only: lower = shows listings ≤ selected value; upper = shows listings ≥ selected value.
Step sizeThe increment step for the slider (e.g., 1, 5, 10).
Format valueWhen checked, formats numbers with commas (e.g., 12,500).

The filter automatically calculates the min and max prices from all published listings of that type, displays your WooCommerce currency symbol, and for variable products considers all variation prices.

Sorting by Price

You can sort product listings by price using the meta key _mlprdlm_current_product_price in your listing type’s sort options or custom WP_Query arguments.


ACF Compatibility

If Advanced Custom Fields (ACF) is installed, the plugin automatically syncs ACF data between products and listings:

1. Create ACF field groups for the product post type.

2. Use the same field name keys on both your MyListing listing fields and the ACF fields.

3. When a product is saved, ACF field values are automatically copied to the linked listing.

4. When a listing is saved, matching ACF field values are copied to the linked product.

This enables workflows where custom data entered on either the product or listing side stays in sync.


Resync Existing Products

If you install the plugin on a site that already has WooCommerce products:

1. Go to the plugin’s settings page.

2. Check the “Resync product listings” checkbox.

3. Click Save Changes.

The plugin iterates through all published Simple and Variable products and creates or updates their linked listings. This is a one-time operation — the checkbox does not save as a permanent setting.


Template File Management

The plugin copies three template files into your child theme:

TemplatePurpose
Product field formRenders the {C} Product Listing field UI on the add/edit listing form.
Price range filter optionsRenders the filter configuration UI in the listing type editor.
Price range filterRenders the price range slider on the Explore page.
EventWhat Happens
Plugin activationTemplates are copied to the child theme.
Plugin updateTemplates are force-reinstalled (overwrites existing files).
Plugin deactivationTemplates are deleted from the child theme. The product field and price filter stop rendering.
Theme switchTemplate tracking is reset.

Data is preserved: Deactivating the plugin removes templates but does not delete any product or listing data. The cross-reference links and product data remain intact. Reactivating restores full functionality.

Template overwrite warning: If you manually customize any template files in the child theme, your changes will be overwritten when the plugin is updated or reactivated.


Frequently Asked Questions

Does this plugin require WooCommerce?

Yes. WooCommerce is required for product management, cart, and checkout. An admin error notice appears if WooCommerce is not detected.

Can I use this with multiple listing types?

No. The plugin currently supports one listing type for product sync. All products are mapped to the single listing type selected in settings.

What product types are supported?

Only Simple and Variable products. If a product is changed to an unsupported type (Grouped, External, etc.), the linked listing is trashed and the link is removed.

What happens when I delete a product?

Trashing a product automatically trashes the linked listing. This always works regardless of the “Sync delete status” setting.

What happens when I delete a listing?

This depends on the “Sync delete status?” setting. If enabled, trashing a listing also trashes the linked product. If disabled, the product remains unaffected when the listing is trashed.

How do I display the product price on a listing page?

Use the dynamic tag [[codicts-product.price]] in your listing page template blocks or preview card templates. It outputs the formatted price HTML including sale price formatting.

How do I add an add-to-cart button to preview cards?

Use the shortcode with icon-only mode: [codicts-mylisting-products-listing-maker::add-to-cart id=[[:id]] button_icon_only="true"]

Can I use the icon-only add-to-cart button with variable products?

Yes, but the icon-only mode does not show attribute dropdowns. Customers would need to visit the full listing page to select variations. Use the full add-to-cart mode on listing pages for variable products.

How does the price filter work with variable products?

Each variation’s price is stored as a separate entry on the listing. The price range filter matches listings where any variation falls within the selected range. The max price calculation considers all variation prices.

Will existing products get listings automatically?

Not on plugin activation. Use the “Resync product listings” checkbox on the settings page to generate listings for all existing Simple and Variable products.

How do I sort listings by price?

Use the meta key _mlprdlm_current_product_price in your listing type’s sort options or custom query arguments.

Does the plugin sync product categories and tags?

No. WooCommerce product categories and tags are not automatically mapped to MyListing taxonomies. You would need to handle this separately through custom code or ACF fields.

How does the pipe delimiter work for variable products?

Attribute names and values are separated by the pipe character (|). The position of each value corresponds to the position of each name. For example, “color | size” with “red | medium” means color=red and size=medium. Attribute names and values must not contain the pipe character.

What happens if I save a product from both sides at the same time?

The plugin has built-in infinite loop prevention. When a sync operation is running, the plugin temporarily disables its own hooks to prevent the product save from triggering a listing save which would trigger another product save.


Troubleshooting

Products Not Creating Listings (or Vice Versa)

CauseSolution
No listing type selectedGo to the plugin settings page and select a listing type from the “Products listing type” dropdown.
Listing type doesn’t have the product fieldEdit the listing type and add the {C} Product Listing field to the Fields tab.
Unsupported product typeOnly Simple and Variable products are supported. Grouped, External, and other types won’t sync.
Plugin deactivated or templates missingDeactivate and reactivate the plugin to reinstall templates.
WooCommerce not activeEnsure WooCommerce is installed and activated.

Existing Products Don’t Have Listings

CauseSolution
Products existed before plugin installationGo to the settings page, check “Resync product listings,” and click Save Changes. This creates listings for all existing Simple and Variable products.

Add-to-Cart Button Not Working

CauseSolution
Product not linkedEnsure the listing has a linked WooCommerce product. Check that the listing was saved with the product field data.
Product out of stockThe button shows “Out of stock” text or a greyed-out icon. Update the product’s stock status.
JavaScript errorCheck the browser console (F12 → Console) for errors. The AJAX add-to-cart requires jQuery and WooCommerce scripts to be loaded.
Variable product with icon-only modeIcon-only mode doesn’t show attribute dropdowns. Use the full mode on listing pages for variable products.

Price Range Filter Not Working on Explore Page

CauseSolution
Filter not addedEdit the listing type, go to Search Forms, and add the {C} Product Price Range filter.
No price data on listingsListings must have product price data stored. Resync products if needed, or ensure listings are saved with the product field.
Slider shows 0–0 rangeNo published listings of this type have price data. Create or resync product listings first.

Images Not Syncing Between Products and Listings

CauseSolution
CDN or WebP imagesThe listing→product image sync uses WordPress’s attachment_url_to_postid() function, which may not work with CDN-rewritten URLs or WebP-converted images. Ensure images are served from the standard WordPress uploads directory.

Status Changes Not Syncing

CauseSolution
Listing trash not affecting productThis is controlled by the “Sync delete status?” setting. Enable it on the settings page if you want listing trash to also trash the product.
Bulk edit or import triggered syncAny product save triggers the sync. Bulk edits and imports may cause many sync operations. This is expected behavior.

“MyListing Theme Not Detected” or “WooCommerce Not Detected” Error

All three dependencies must be met: the MyListing theme must be active, a MyListing child theme must be in use, and WooCommerce must be installed and activated. Go to Appearance → Themes and Plugins → Installed Plugins to verify.


For further support, visit codicts.com or contact us at support@codicts.com.

CoDicts Co., Ltd. © 2021-2026. All rights reserved