WB Ad Manager Pro includes a report/flag system that lets users report problematic classified listings and a paid upgrade system that lets advertisers boost their listings with featured placement, highlighting, urgency badges, and bump-to-top. Both features are part of the Classifieds module and activate automatically when classifieds are enabled.
Report / Flag System
Users can report classified listings they believe violate site rules. Reports are submitted from the frontend listing detail page and managed by admins in the WordPress dashboard.
Report Reasons
When submitting a report, users select one of these predefined reasons:
| Reason Key | Display Label |
|---|---|
spam |
Spam or Scam |
prohibited |
Prohibited Item |
misleading |
Misleading Information |
duplicate |
Duplicate Listing |
wrong_category |
Wrong Category |
offensive |
Offensive Content |
fraud |
Suspected Fraud |
other |
Other |
Users can also provide additional details in a free-text field. Both registered users and guests can submit reports, but registered users are tracked by user ID to prevent duplicate reports on the same listing.
Report Statuses
Each report moves through a workflow with four possible statuses:
| Status | Description |
|---|---|
| Pending | Newly submitted, awaiting admin review |
| Reviewed | Admin has looked at the report but not yet taken action |
| Resolved | Admin has addressed the issue (listing removed, edited, etc.) |
| Dismissed | Admin determined the report is invalid or not actionable |
Admin Workflow
Reports are managed at Classifieds -> Reports in the WordPress admin. The menu item shows a count badge for pending reports.
List View:
- Filter by status (All, Pending, Reviewed, Resolved, Dismissed) using tabs at the top
- Filter by reason using the dropdown
- Each row shows: Report ID, Classified title (linked to edit page), Reporter name and email, Reason, Status, Submission date, and Quick actions
- Quick actions: View, Mark Reviewed (for pending), Dismiss (for pending/reviewed)
Detail View:
Click “View” to see the full report with:
- Report details: reason, additional details, submission date, review timestamp, reviewer name, resolution date
- Reporter information: name, email, registered user vs. guest
- Admin notes field for internal tracking
- Status dropdown to change the report status
- Sidebar showing the reported classified with thumbnail, title, price, and current post status
- Other reports count — shows how many other reports exist for the same listing
- Quick action buttons: Mark as Reviewed, Mark as Resolved, Dismiss Report, Trash Classified
All status changes and note updates are saved via a form submission with nonce verification. Quick actions (Mark Reviewed, Dismiss, Delete) also work via AJAX for faster workflow.
Handling Multiple Reports
When viewing a report detail page, the sidebar shows if the same classified has received additional reports. This helps admins identify patterns — a listing with many reports across different reasons likely needs attention.
Listing Upgrades
Advertisers can purchase upgrades to increase the visibility of their classified listings. Upgrades are charged from the advertiser’s wallet balance and have configurable durations.
Upgrade Types
| Type | Key | Default Price | Default Duration | Effect |
|---|---|---|---|---|
| Featured | featured |
$9.99 | 7 days | Listing appears in the featured section and at the top of search results; listing type changes to featured |
| Highlighted | highlighted |
$4.99 | 7 days | Listing receives a visual highlight (background color, border) in browse and search results |
| Urgent | urgent |
$4.00 | 7 days | Listing displays an “Urgent” badge to attract immediate attention |
| Top | top |
$6.00 | 7 days | Listing is pinned to the top of its category |
| Bump | bump |
$2.99 | Instant | Moves the listing to the top of the “newest first” sort order by updating its bumped_at timestamp; also increments a bump_count |
Pricing Configuration
Upgrade prices are controlled via settings and are filterable:
// Filter all upgrade prices at once.
add_filter( 'wbam_classified_upgrade_prices', function( $prices ) {
$prices['featured'] = 15.00;
$prices['bump'] = 5.00;
return $prices;
} );
// Filter individual upgrade prices.
add_filter( 'wbam_upgrade_price_featured', function( $price ) {
return 15.00;
} );
Listing type prices (featured and premium) are configured in settings:
| Setting Key | Default |
|---|---|
classified_featured_price |
9.99 |
classified_premium_price |
19.99 |
classified_highlight_price |
4.99 |
classified_bump_price |
2.99 |
How Upgrades Work
- An advertiser selects upgrades when posting or editing a classified (checkboxes on the submission form)
- The total cost (listing fee + selected upgrades) is calculated and checked against the wallet balance
- If the balance is sufficient, the wallet is debited and upgrades are applied
- Each upgrade creates a row in the
wbam_classified_upgradestable withstatus = 'active'and an expiration date - The
wbam_expire_upgradescron job runs hourly to expire upgrades past theirexpires_atdate
Duplicate Prevention
If an advertiser purchases an upgrade type that is already active on their listing, the existing active upgrade’s expiration is extended rather than creating a duplicate entry.
Featured Upgrade Auto-Expiration
When a featured upgrade expires, the system checks if the classified has any other active featured upgrades. If not, the listing’s listing_type is reverted to standard and the wbam_classified_downgraded action fires. This logic runs inside the expire_upgrades() cron callback.
Featured Billing (Recurring)
For sites that offer subscription-style featured listings, the Classified_Billing class handles automated recurring charges:
- Billing cron (
wbam_process_classified_billing) — Runs hourly. Finds featured/premium classifieds withfeatured_next_billing <= NOW()and processes wallet charges. Uses MySQL advisory locks (GET_LOCK) plus per-rowprocessing_locktimestamps to prevent double-billing on distributed servers. - Expiration warnings (
wbam_classified_expiration_warnings) — Runs daily. Sends email warnings to advertisers whose featured status will expire within a configurable number of days (default: 3). - Billing failure — If an advertiser’s wallet balance is insufficient for renewal, the listing is downgraded to standard and both the advertiser and admin receive notifications.
Email Notifications for Featured Listings
| Event | Hook | Recipient |
|---|---|---|
| Featured upgrade purchased | wbam_classified_featured_upgraded |
Admin + Advertiser |
| Featured renewed (recurring) | wbam_classified_featured_renewed |
Advertiser |
| Featured downgraded | wbam_classified_featured_downgraded |
Advertiser |
| Billing failed | wbam_classified_featured_billing_failed |
(triggers downgrade notification) |
| Expiration warning | (internal) | Advertiser |
Refunds on Rejection
When an admin rejects a classified that has a paid listing type (featured or premium), the system automatically refunds the listing fee to the advertiser’s wallet. Standard listings are not refunded since they have no listing fee. Refund amounts are based on the configured price at the time of rejection.
Next Steps
- Setting Up Classifieds
- Inquiries Management
- Advertiser Management
