Reports & Upgrades

Get Started

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

  1. An advertiser selects upgrades when posting or editing a classified (checkboxes on the submission form)
  2. The total cost (listing fee + selected upgrades) is calculated and checked against the wallet balance
  3. If the balance is sufficient, the wallet is debited and upgrades are applied
  4. Each upgrade creates a row in the wbam_classified_upgrades table with status = 'active' and an expiration date
  5. The wbam_expire_upgrades cron job runs hourly to expire upgrades past their expires_at date

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.

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.

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 with featured_next_billing <= NOW() and processes wallet charges. Uses MySQL advisory locks (GET_LOCK) plus per-row processing_lock timestamps 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.
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

Last updated: March 4, 2026