{"id":308158,"date":"2026-09-09T10:23:42","date_gmt":"2026-09-09T10:23:42","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/classipress-pro-core\/"},"modified":"2026-09-09T10:23:14","modified_gmt":"2026-09-09T10:23:14","slug":"listingcore","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/listingcore\/","author":23492499,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"ListingCore","header_author":"ListingCore","header_description":"Generic classifieds\/listing engine: listings, categories, search, wishlists, REST API, and optional paid listings via WooCommerce.","assets_banners_color":"","last_updated":"2026-09-09 10:23:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"virendrasingh06","date":"2026-09-09 10:23:14","revision":3688103}},"upgrade_notice":{"1.0.1":"<p>Security and hardening release. No upgrade steps required.<\/p>","1.0.0":"<p>Initial release. No upgrade steps required.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[4531,4527,1794,2466,4528],"plugin_category":[],"plugin_contributors":[279915],"plugin_business_model":[],"class_list":["post-308158","plugin","type-plugin","status-publish","hentry","plugin_tags-classified-ads","plugin_tags-classifieds","plugin_tags-custom-post-type","plugin_tags-directory","plugin_tags-listings","plugin_contributors-virendrasingh06","plugin_committers-virendrasingh06"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/listingcore.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>ListingCore provides the classified ads functionality for a standalone WordPress classifieds and listing engine. Install this plugin to enable:<\/p>\n\n<ul>\n<li><strong>Custom Post Type<\/strong> \u2014 A <code>listing<\/code> post type with full admin support, REST API, and rich meta fields (price, condition, brand, model, location, contact info, expiry date, and more).<\/li>\n<li><strong>Taxonomies<\/strong> \u2014 Listing Category (hierarchical) and Listing Tag.<\/li>\n<li><strong>User Roles<\/strong> \u2014 <code>listing_poster<\/code> (submits and manages their own listings) and <code>listing_moderator<\/code> (manages other users' listings and listing categories).<\/li>\n<li><strong>Shortcodes<\/strong> \u2014 <code>[listingcore_listings]<\/code>, <code>[listingcore_categories]<\/code>, <code>[listingcore_search_form]<\/code>, <code>[listingcore_post_listing_button]<\/code>, <code>[listingcore_user_dashboard]<\/code>, <code>[listingcore_listing_form]<\/code>, <code>[listingcore_contact_form]<\/code>, <code>[listingcore_wishlist]<\/code>.<\/li>\n<li><strong>AJAX Handlers<\/strong> \u2014 Wishlist toggle, contact seller form submission, live search autocomplete, and load-more listings.<\/li>\n<li><strong>Admin Columns<\/strong> \u2014 Price, location, status badges, view count, and expiry date columns in the listings list table.<\/li>\n<li><strong>Expiry Cron<\/strong> \u2014 Daily cron job that emails authors when listings are about to expire (3-day warning) or have expired.<\/li>\n<li><strong>REST API<\/strong> \u2014 Selected listing fields exposed via the WP REST API (sensitive contact\/location fields are capability and privacy gated), plus custom endpoints <code>\/wp-json\/listingcore\/v1\/listings<\/code> and <code>\/wp-json\/listingcore\/v1\/listings\/{id}\/similar<\/code>.<\/li>\n<li><strong>SEO<\/strong> \u2014 Product + Offer JSON-LD structured data on published singular listings, and listing inclusion in WordPress's standard XML sitemap.<\/li>\n<li><strong>Single Listing<\/strong> \u2014 A plugin-owned fallback single-listing detail template (overridable by your theme), so listings render correctly with any theme.<\/li>\n<\/ul>\n\n<h4>Shortcode Reference<\/h4>\n\n<p><strong>[listingcore_listings]<\/strong>\nDisplay a grid of listings.\n    [listingcore_listings cat=\"electronics\" count=\"8\" view=\"grid\" featured=\"1\"]<\/p>\n\n<p>Parameters:\n* <code>cat<\/code> \u2014 Category slug or ID (optional)\n* <code>count<\/code> \u2014 Number of listings (default: 8)\n* <code>view<\/code> \u2014 <code>grid<\/code> or <code>list<\/code> (default: grid)\n* <code>featured<\/code> \u2014 Set to <code>1<\/code> to show featured listings only\n* <code>location<\/code> \u2014 Exact city name (default: none)\n* <code>sort<\/code> \u2014 <code>date<\/code>, <code>price_asc<\/code>, <code>price_desc<\/code>, <code>views<\/code> (default: date)\n* <code>order<\/code> \u2014 <code>ASC<\/code> or <code>DESC<\/code> (default: DESC). Ignored by <code>price_asc<\/code>\/<code>price_desc<\/code>, which encode their own direction.<\/p>\n\n<p><strong>[listingcore_categories]<\/strong>\nDisplay a category grid.\n    [listingcore_categories count=\"8\" columns=\"4\" show_count=\"yes\"]<\/p>\n\n<p>Parameters:\n* <code>count<\/code> \u2014 Number of categories (default: 8)\n* <code>columns<\/code> \u2014 Grid columns (default: 4)\n* <code>show_count<\/code> \u2014 Show listing count per category: <code>yes<\/code> or <code>no<\/code> (default: yes)\n* <code>hide_empty<\/code> \u2014 Hide categories with no listings: <code>yes<\/code> or <code>no<\/code> (default: no)\n* <code>parent<\/code> \u2014 Parent category ID (default: 0, top-level categories only)<\/p>\n\n<p><strong>[listingcore_search_form]<\/strong>\nDisplay a search form for listings.\n    [listingcore_search_form placeholder=\"Search...\" show_cats=\"yes\" show_loc=\"yes\"]<\/p>\n\n<p><strong>[listingcore_post_listing_button]<\/strong>\nDisplay a \"Post Ad\" button.\n    [listingcore_post_listing_button text=\"Post Free Ad\" url=\"\/submit\"]<\/p>\n\n<p>Parameters:\n* <code>text<\/code> \u2014 Button label (default: \"Post Free Ad\")\n* <code>url<\/code> \u2014 Destination URL (default: the configured submit page)\n* <code>class<\/code> \u2014 Additional CSS classes (default: <code>cp-btn cp-btn-accent cp-btn-lg<\/code>)<\/p>\n\n<p><strong>[listingcore_user_dashboard]<\/strong>\nEmbed the user dashboard: the current user's listings with status, created date, expiry, edit, delete, and renew (for eligible paid listings).<\/p>\n\n<p><strong>[listingcore_listing_form]<\/strong>\nEmbed the submit listing form inline on any page.<\/p>\n\n<p><strong>[listingcore_contact_form]<\/strong>\nEmbed the contact-seller form for a listing.\n    [listingcore_contact_form listing_id=\"123\"]<\/p>\n\n<ul>\n<li><code>listing_id<\/code> \u2014 Listing ID to contact (optional; defaults to the current listing when placed on a single listing page). Only published listings render the form.<\/li>\n<\/ul>\n\n<p><strong>[listingcore_wishlist]<\/strong>\nDisplay the current user's saved listings.\n    [listingcore_wishlist]<\/p>\n\n<p>Requires login. Shows the current user's saved published listings in saved order, using the standard listing-card presentation.<\/p>\n\n<h4>REST API Endpoints<\/h4>\n\n<p>Selected listing fields are exposed via the REST API; sensitive contact and location fields are capability and privacy gated.<\/p>\n\n<ul>\n<li><code>GET \/wp-json\/listingcore\/v1\/listings<\/code> \u2014 Paginated listing results with filtering by category, location, price range, and featured status.\n\n<ul>\n<li><code>cat<\/code> \u2014 Category slug or ID.<\/li>\n<li><code>location<\/code> \u2014 Exact city match.<\/li>\n<li><code>min_price<\/code> \/ <code>max_price<\/code> \u2014 Decimal price range (unpriced listings are excluded from price-range queries).<\/li>\n<li><code>featured<\/code> \u2014 Show featured listings only.<\/li>\n<\/ul><\/li>\n<li><code>GET \/wp-json\/listingcore\/v1\/listings\/{id}\/similar<\/code> \u2014 Similar listings based on category.<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 8.0 or higher<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>ListingCore stores the listing data entered by the listing author (title, description, price, location, condition, and contact details such as phone and email) and each listing's view count, and stores each user's saved (wishlist) listings. Listing contact details are not publicly exposed. The contact-seller form emails the visitor's name, email, phone, and message to the listing author. Paid-listing and expiry events send transactional emails to the listing author. ListingCore does not transmit data to third-party services; if enabled, payment processing is handled by WooCommerce.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install via the WordPress plugin installer by uploading the ZIP file.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Listings \u2192 Categories<\/strong> and add your listing categories.<\/li>\n<li>Create pages for your Submit Listing form and User Dashboard, and add the relevant shortcodes (<code>[listingcore_listing_form]<\/code>, <code>[listingcore_user_dashboard]<\/code>).<\/li>\n<li>Use the shortcodes in any page or post to display listings, categories, and search forms.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20this%20plugin%20to%20use%20the%20classipress%20pro%20theme%3F\"><h3>Do I need this plugin to use the ClassiPress Pro theme?<\/h3><\/dt>\n<dd><p>Yes. The theme handles presentation only. This plugin provides the classified ads data layer (post types, taxonomies, roles, shortcodes, and AJAX functionality).<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20plugin%20with%20a%20different%20theme%3F\"><h3>Can I use this plugin with a different theme?<\/h3><\/dt>\n<dd><p>The plugin works independently of the ClassiPress Pro theme. The user dashboard, listing submission and edit forms, contact form, and the single-listing detail page are plugin-owned, and themes can override any of them. The listing post type and all admin features work with any theme.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20icons%20to%20listing%20categories%3F\"><h3>How do I add icons to listing categories?<\/h3><\/dt>\n<dd><p>Edit any listing category under <strong>Listings \u2192 Categories<\/strong> and enter an emoji or icon character in the \"Category Icon\" field. This appears in the category grid on the homepage and archive pages.<\/p><\/dd>\n<dt id=\"are%20paid%20listings%20supported%3F\"><h3>Are paid listings supported?<\/h3><\/dt>\n<dd><p>Yes. Paid listings run through WooCommerce. Create listing packages (each with a price, duration, and optional Featured\/Urgent\/Verified flags), map each package to a WooCommerce product, and select a package when submitting a listing.<\/p>\n\n<p>When a package is selected, the listing is held as <code>pending<\/code> until the WooCommerce order is completed, at which point the listing is activated and published with its package entitlements. When the paid period ends, the paid entitlements are cleared and the owner can renew the listing (choosing the same or another package). If an order is cancelled or refunded, the paid entitlement is revoked.<\/p>\n\n<p>WooCommerce is required for paid listings. Free listing submission remains available without WooCommerce and is published immediately.<\/p>\n\n<p>Authors receive email confirmations for successful payment, successful renewal, cancellation, and refund, in addition to the daily expiry reminders.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20a%20listing%20expiry%20date%3F\"><h3>How do I set a listing expiry date?<\/h3><\/dt>\n<dd><p>When editing a listing in the WordPress admin, use the <strong>Listing Status<\/strong> meta box on the right side to set an expiry date. The plugin's daily cron job notifies the author 3 days before expiry and again when the listing expires. On natural expiry, a paid listing's trust entitlements (Featured\/Urgent\/Verified) are cleared; the listing itself is not automatically unpublished.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20translation-ready%3F\"><h3>Is this plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. All strings use the <code>listingcore<\/code> text domain.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20elementor%20or%20other%20page%20builders%3F\"><h3>Does this work with Elementor or other page builders?<\/h3><\/dt>\n<dd><p>Yes. The shortcodes work in any page builder. The ClassiPress Pro theme also registers Elementor theme locations (header, footer, single, archive) for full Elementor template builder support.<\/p><\/dd>\n<dt id=\"how%20do%20i%20display%20the%20user%20dashboard%3F\"><h3>How do I display the user dashboard?<\/h3><\/dt>\n<dd><p>Create a page and add the shortcode <code>[listingcore_user_dashboard]<\/code> to its content. Visitors who are not logged in will see a login prompt. Logged-in users see their listings with status, date, expiry, edit, delete, and renew actions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security: sanitize and validate frontend submission\/update form input at the request boundary (title, description, price, URL, location, enum, and boolean fields).<\/li>\n<li>Security: escape all frontend and AJAX renderer output through explicit KSES allowlists, including filtered listing detail fields, listing cards, wishlist buttons, contact forms, and package selectors.<\/li>\n<li>Removed obsolete <code>phpcs:ignore<\/code> suppression comments from code that is now properly sanitized and escaped.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Registered <code>listing<\/code> and <code>listing_package<\/code> custom post types.<\/li>\n<li>Registered <code>listing_category<\/code>, <code>listing_tag<\/code>, <code>listing_location<\/code>, <code>listing_condition<\/code> taxonomies.<\/li>\n<li>Added <code>listing_poster<\/code> and <code>listing_moderator<\/code> user roles.<\/li>\n<li>Added shortcodes: <code>[listingcore_listings]<\/code>, <code>[listingcore_categories]<\/code>, <code>[listingcore_search_form]<\/code>, <code>[listingcore_post_listing_button]<\/code>, <code>[listingcore_user_dashboard]<\/code>, <code>[listingcore_listing_form]<\/code>.<\/li>\n<li>Added AJAX handlers for wishlist, contact seller, live search, and load-more.<\/li>\n<li>Added custom admin columns for the listings list table.<\/li>\n<li>Added daily cron for listing expiry notifications.<\/li>\n<li>Added REST API field registration and custom endpoints.<\/li>\n<\/ul>","raw_excerpt":"Generic classifieds\/listing engine: listings, categories, search, wishlists, REST API, and optional paid listings via WooCommerce.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/308158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=308158"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/virendrasingh06"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=308158"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=308158"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=308158"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=308158"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=308158"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=308158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}