{CODICTS} Snippets is now available

MyListing Relist Expired Listings

The {CODICTS} MyListing Relist Expired Listings plugin prevents listings from disappearing when they expire or when a WooCommerce Subscription ends. Instead of the default MyListing behavior — which sets listings to “expired” status and removes them from the site — this plugin automatically switches expired listings to a designated free/basic package and re-publishes them, keeping listings visible at all times.

When a subscription is reactivated, the plugin automatically restores listings to their original paid package — no manual intervention needed.

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”.

After activation, navigate to Listing Relist in the WordPress admin sidebar to configure the plugin settings.


Key Features

FeatureDescription
Automatic RelistingWhen a listing expires or its subscription ends, the plugin automatically switches it to a free/basic package and re-publishes it — keeping the listing visible on your site.
Subscription ReactivationWhen a cancelled or expired subscription is reactivated, listings are automatically restored to their original paid package.
Delay Grace PeriodConfigure a grace period (in days) for on-hold subscriptions, giving users time to fix payment issues before their listings are downgraded.
Email NotificationsSend styled HTML email notifications to selected administrators when listings are relisted or subscription statuses change.
Relist RecordsA searchable log of all relist events showing listing name, type, old/new packages, author, and date.
Automatic Log CleanupA daily scheduled task automatically removes old relist records after the configured retention period.

How It Works

When a Listing Expires or Subscription Ends

Instead of letting the listing become invisible, the plugin intercepts the expiration and:

1. Switches the listing to the configured free/basic package.

2. Sets the listing status back to published so it remains visible on the site.

3. Updates all listing metadata (package ID, product ID, duration, featured status, expiry).

4. Logs the relist event in the database.

5. Sends email notifications to selected administrators (if configured).

Trigger Events

EventWhat Happens
Listing status → expiredImmediately relists the listing on the basic package.
Subscription → cancelledImmediately relists all listings tied to that subscription.
Subscription → expiredImmediately relists all listings tied to that subscription.
Subscription → on-holdRelists after the configured delay period (or immediately if delay is 0 days).
Subscription → active (reactivated)Reverses the relist — restores listings to the reactivated subscription’s original paid package.

Note: The plugin checks whether a subscription is still active before relisting. If a listing expires but its subscription is still active, the plugin does nothing.


Settings Page

Navigate to Listing Relist in the WordPress admin sidebar to access the settings.

Enable / Disable

Option: Enable Relist Expired Listings?

Default: Yes

Toggle the plugin’s relist functionality on or off. When disabled, listings will behave according to the default MyListing behavior (expired listings become invisible).

Basic Package

Option: Basic Package (dropdown)

Select the WooCommerce product that listings should be switched to when they expire or their subscription ends.

Important — Basic Package requirements:
• It must be a Listing Package type (not a “Listing Subscription”).
• Its price must be set to 0 (free).
• It must be added to the Paid Listing packages for every listing type you want to support relisting. If the basic package is not valid for a listing type, relisting will be skipped for that type.

Delay Days

Option: Delay Days (number)

Default: 0

Range: 0–365

Set the number of days to wait before downgrading listings when a subscription status changes to on-hold. This gives users a grace period to fix payment issues before their listing is switched to the basic package.

ValueBehavior
0Listings are switched to the basic package immediately when the subscription goes on-hold.
3The plugin waits 3 days. If the user reactivates within that time, their listings stay on the original package.
77-day grace period before downgrading.

Note: This delay only applies to on-hold status changes. Cancelled and expired subscriptions are always processed immediately.

Email Notifications

Option: Email Notifications (multi-select user list)

Select which WordPress users should receive email notifications when a listing is relisted or a subscription status changes. Leave empty to disable notifications. Multiple users can be selected.

Relist Log Days

Option: Relist Logs Days (number)

Default: 7

Range: 1–365

Set how many days to retain relist log records. A daily scheduled task automatically deletes records older than this number of days.


Relist Records

Navigate to Listing Relist → Relist Records in the admin sidebar to view a searchable log of all relist events.

ColumnDescription
Listing NameThe title of the relisted listing (links to the edit page).
Listing TypeThe MyListing listing type (e.g., “place,” “event”).
Old PackageThe previous package ID and product name. Shows “Expired” if no previous package existed.
New PackageThe new package ID and product name the listing was switched to.
AuthorThe listing owner’s display name (links to their user profile).
Relist DateDate and time of the relist event.

Use the search field to find records by listing name, listing type, or author name.


Email Notifications

When email notifications are configured, the plugin sends styled HTML emails for the following events:

EventSubject LineDetails
Listing Expired{username}’s listing has expiredInforms that the listing expired and was switched to the basic package. Includes listing name, type, new package, and a link to view the listing.
Subscription Reactivated{username} has reactivated their subscriptionDetails the package switch from the basic package back to the subscription’s original package.
Subscription Expired{username}’s subscription has expiredDetails the package switch to the basic package due to subscription expiration.
Subscription Cancelled{username} has cancelled their subscriptionNotes that the listing remains active after cancellation, with package switch details.
Subscription On-Hold{username} has placed their subscription on holdDetails the package switch due to the on-hold status.

All emails include a styled HTML template with your site name in the footer and a “View Listing” button linking directly to the listing.


Example Setup

1. Activate the plugin with the MyListing theme and a child theme active.

2. Create a free WooCommerce product for the basic package:

a. Go to Products → Add New.

b. Set the product type to Listing Package (not “Listing Subscription”).

c. Set the price to 0.

d. Configure the package settings (e.g., not featured, no verification, no expiry).

e. Publish the product.

3. Add the basic package to your listing types:

a. Go to each Listing Type you want to support relisting.

b. Add the free package product to the Paid Listing packages for that type.

c. Save each listing type.

4. Navigate to Listing Relist in the admin sidebar.

5. Ensure Enable Relist Expired Listings is set to Yes.

6. Select the free package you created in the Basic Package dropdown.

7. Set Delay Days to 3 to give users a 3-day grace period for on-hold subscriptions.

8. Select the admin users who should receive notifications in Email Notifications.

9. Set Relist Log Days to 30 to retain records for a month.

10. Save settings.

Now when a listing expires or a subscription ends, the listing automatically switches to the free package and stays published. When a subscription is reactivated, the listing is restored to its original paid package. All events are logged in Listing Relist → Relist Records and notification emails are sent to selected administrators.


Frequently Asked Questions

Does this require a child theme?

Yes. The plugin will not activate without a MyListing child theme.

Does this work with the Voxel theme?

No. This plugin is specifically designed for the MyListing theme by 27Starter.

What happens when a user reactivates their subscription?

The plugin automatically restores all associated listings to the subscription’s original paid package. The listings are re-published with the original package settings (duration, featured status, verification, etc.).

What if I don’t use WooCommerce Subscriptions?

The plugin still works for standard listing expirations — when a listing’s expiry date passes and MyListing sets it to “expired,” the plugin switches it to the basic package. The subscription-specific features simply won’t apply.

Can I set different basic packages for different listing types?

Currently, the plugin uses a single basic package for all listing types. However, the basic package must be added to the paid listing packages for each listing type you want to support. If the basic package is not valid for a listing type, relisting is skipped for that type.

What does the “Delay Days” setting do exactly?

It only applies to on-hold subscription status changes (e.g., when a payment fails). The plugin waits the specified number of days before switching listings to the basic package. If the user reactivates within the delay period, their listings remain on the original package. Cancelled and expired subscriptions are always processed immediately regardless of this setting.

Where can I see which listings were relisted?

Navigate to Listing Relist → Relist Records in the admin menu. You’ll see a searchable table of all relist events with the listing name, type, old/new packages, author, and date.

What happens when I deactivate the plugin?

All scheduled tasks are properly stopped. The database table and settings are preserved, so your data is still there if you reactivate the plugin later. While deactivated, listings will follow the default MyListing expiration behavior.

What are the requirements for the basic package product?

The basic package must be a Listing Package product type (not a “Listing Subscription”), its price must be 0 (free), and it must be added to the paid listing packages for every listing type you want to support relisting.

Does the plugin create any database tables?

Yes. The plugin creates one custom table to store relist event logs. This table is created automatically on activation and records are automatically cleaned up based on the configured retention period.


Troubleshooting

Listings Still Expiring (Not Being Relisted)

CauseSolution
Plugin disabledGo to Listing Relist settings and ensure “Enable Relist Expired Listings” is set to Yes.
No basic package selectedSelect a valid basic package in the Basic Package dropdown on the settings page.
Basic package not added to listing typeThe basic package must be added to the Paid Listing packages for the listing type. If the package is not valid for a listing type, relisting is skipped. Go to each listing type and add the basic package.
Basic package is a Subscription typeThe basic package must be a Listing Package type, not a “Listing Subscription.” Edit the WooCommerce product and change its type.
Basic package price is not 0The basic package must have a price of 0 (free). Edit the product and set the price to 0.
Plugin not activatedGo to Plugins → Installed Plugins and verify the plugin is active.

Subscription Reactivation Not Restoring Original Package

CauseSolution
Subscription metadata missingThe plugin stores the original subscription ID on the listing when it’s relisted. If this metadata was manually deleted, the plugin cannot match listings back to the reactivated subscription.
Listing was manually reassignedIf you manually changed a listing’s package after it was relisted, the plugin may not restore it correctly on reactivation.

Email Notifications Not Being Sent

CauseSolution
No users selectedGo to Listing Relist settings and select at least one user in the Email Notifications multi-select.
WordPress email not configuredThe plugin uses WordPress’s wp_mail() function. Ensure your site can send emails (check with an SMTP plugin if needed).

Relist Records Not Showing

CauseSolution
Records auto-deletedRecords older than the configured Relist Log Days value are automatically deleted daily. Increase the retention period in settings if you need records kept longer.
No relist events have occurredRecords only appear after a listing has been relisted. If no listings have expired since activation, the table will be empty.

On-Hold Subscriptions Not Waiting for the Delay Period

CauseSolution
Delay Days set to 0A value of 0 means immediate processing. Set Delay Days to a higher value (e.g., 3 or 7) in the settings to enable the grace period.
WordPress cron not runningThe delay uses WordPress scheduled tasks. If your site’s cron system isn’t running reliably, the delayed task may not fire on time. Consider using a server-level cron job to trigger wp-cron.php.

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

The MyListing theme and a child theme must both be installed and active. Go to Appearance → Themes to verify.


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

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