{"id":45,"date":"2026-05-05T03:15:55","date_gmt":"2026-05-05T03:15:55","guid":{"rendered":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/2026\/05\/05\/categories-locations\/"},"modified":"2026-05-05T03:15:55","modified_gmt":"2026-05-05T03:15:55","slug":"categories-locations","status":"publish","type":"post","link":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/2026\/05\/05\/categories-locations\/","title":{"rendered":"Categories &#038; Locations"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Categories &#038; Locations<\/h1>\n\n\n<p>Categories are how visitors browse your marketplace. Locations are how they filter by city\/region. Best Classifieds uses <strong>standard WordPress categories<\/strong> for the free theme (with an optional <code>listing_category<\/code> taxonomy when Pro is active) \u2014 your data stays portable.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">How the taxonomy is structured<\/h2>\n\n\n<svg viewBox=\"0 0 720 240\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"max-width:100%;height:auto;display:block;margin:1rem auto;font-family:system-ui,sans-serif;\">\n  <rect x=\"280\" y=\"20\" width=\"160\" height=\"50\" rx=\"6\" fill=\"#0F4C3A\" stroke=\"none\"\/>\n  <text x=\"360\" y=\"42\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"600\" fill=\"#fff\">Listings<\/text>\n  <text x=\"360\" y=\"58\" text-anchor=\"middle\" font-size=\"10\" fill=\"#C9A961\">parent category<\/text>\n\n  <line x1=\"360\" y1=\"70\" x2=\"60\" y2=\"120\" stroke=\"#94a3b8\" stroke-width=\"1\"\/>\n  <line x1=\"360\" y1=\"70\" x2=\"180\" y2=\"120\" stroke=\"#94a3b8\" stroke-width=\"1\"\/>\n  <line x1=\"360\" y1=\"70\" x2=\"300\" y2=\"120\" stroke=\"#94a3b8\" stroke-width=\"1\"\/>\n  <line x1=\"360\" y1=\"70\" x2=\"420\" y2=\"120\" stroke=\"#94a3b8\" stroke-width=\"1\"\/>\n  <line x1=\"360\" y1=\"70\" x2=\"540\" y2=\"120\" stroke=\"#94a3b8\" stroke-width=\"1\"\/>\n  <line x1=\"360\" y1=\"70\" x2=\"660\" y2=\"120\" stroke=\"#94a3b8\" stroke-width=\"1\"\/>\n\n  <rect x=\"20\" y=\"120\" width=\"80\" height=\"40\" rx=\"5\" fill=\"#FAFAF7\" stroke=\"#1E40AF\" stroke-width=\"1\"\/>\n  <text x=\"60\" y=\"144\" text-anchor=\"middle\" font-size=\"11\" fill=\"#1a1a1a\">Vehicles<\/text>\n  <rect x=\"140\" y=\"120\" width=\"80\" height=\"40\" rx=\"5\" fill=\"#FAFAF7\" stroke=\"#1E40AF\" stroke-width=\"1\"\/>\n  <text x=\"180\" y=\"144\" text-anchor=\"middle\" font-size=\"11\" fill=\"#1a1a1a\">Property<\/text>\n  <rect x=\"260\" y=\"120\" width=\"80\" height=\"40\" rx=\"5\" fill=\"#FAFAF7\" stroke=\"#1E40AF\" stroke-width=\"1\"\/>\n  <text x=\"300\" y=\"144\" text-anchor=\"middle\" font-size=\"11\" fill=\"#1a1a1a\">Electronics<\/text>\n  <rect x=\"380\" y=\"120\" width=\"80\" height=\"40\" rx=\"5\" fill=\"#FAFAF7\" stroke=\"#1E40AF\" stroke-width=\"1\"\/>\n  <text x=\"420\" y=\"144\" text-anchor=\"middle\" font-size=\"11\" fill=\"#1a1a1a\">Furniture<\/text>\n  <rect x=\"500\" y=\"120\" width=\"80\" height=\"40\" rx=\"5\" fill=\"#FAFAF7\" stroke=\"#1E40AF\" stroke-width=\"1\"\/>\n  <text x=\"540\" y=\"144\" text-anchor=\"middle\" font-size=\"11\" fill=\"#1a1a1a\">Fashion<\/text>\n  <rect x=\"620\" y=\"120\" width=\"80\" height=\"40\" rx=\"5\" fill=\"#FAFAF7\" stroke=\"#1E40AF\" stroke-width=\"1\"\/>\n  <text x=\"660\" y=\"144\" text-anchor=\"middle\" font-size=\"11\" fill=\"#1a1a1a\">Jobs +2<\/text>\n\n  <text x=\"360\" y=\"200\" text-anchor=\"middle\" font-size=\"11\" fill=\"#5a6f84\">Each listing belongs to one sub-category AND the parent \u2014 the theme uses this dual-membership<\/text>\n  <text x=\"360\" y=\"216\" text-anchor=\"middle\" font-size=\"11\" fill=\"#5a6f84\">to detect &#8220;this is a listing&#8221; vs. &#8220;this is a regular blog post.&#8221;<\/text>\n<\/svg>\n\n\n<p>The 8 default sub-categories created by the WOW Feeder are: <strong>Vehicles<\/strong>, <strong>Property<\/strong>, <strong>Electronics<\/strong>, <strong>Furniture<\/strong>, <strong>Fashion<\/strong>, <strong>Jobs<\/strong>, <strong>Pets<\/strong>, <strong>Services<\/strong>. Each has a Tabler icon assigned via the <code>best_classifieds_category_icon()<\/code> helper.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Adding your own categories<\/h2>\n\n\n<h3 class=\"wp-block-heading\">Via WordPress admin<\/h3>\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Posts \u2192 Categories<\/strong> (or <strong>Listings \u2192 Listing Categories<\/strong> if Pro CPT is enabled).<\/li>\n<li>Set the parent to <strong>Listings<\/strong> to make it a listing sub-category.<\/li>\n<li>Fill in name, slug, and description. The description shows on the category archive page.<\/li>\n<\/ol>\n\n\n<h3 class=\"wp-block-heading\">Get an icon to render in the homepage grid<\/h3>\n\n\n<p>The category card shows an icon based on the slug. The mapping lives in <code>inc\/template-functions.php \u2192 best_classifieds_category_icon()<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>$slug_to_icon = array(\n    &#039;vehicles&#039;    =&gt; &#039;ti-car&#039;,\n    &#039;property&#039;    =&gt; &#039;ti-home&#039;,\n    &#039;electronics&#039; =&gt; &#039;ti-device-laptop&#039;,\n    \/\/ ... add yours here ...\n    &#039;real-estate&#039; =&gt; &#039;ti-building&#039;,\n    &#039;rentals&#039;     =&gt; &#039;ti-key&#039;,\n);<\/code><\/pre>\n\n\n<p><strong>To override without editing the theme<\/strong>, drop this into a small custom plugin or a child theme&#8217;s <code>functions.php<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>add_filter( &#039;best_classifieds_category_icon&#039;, function( $icon, $slug ) {\n    $custom = array(\n        &#039;real-estate&#039; =&gt; &#039;ti-building&#039;,\n        &#039;rentals&#039;     =&gt; &#039;ti-key&#039;,\n        &#039;classes&#039;     =&gt; &#039;ti-school&#039;,\n    );\n    return isset( $custom[ $slug ] ) ? $custom[ $slug ] : $icon;\n}, 10, 2 );<\/code><\/pre>\n\n\n<p>Browse all available icons at <a href=\"https:\/\/tabler-icons.io\/\">tabler-icons.io<\/a>. Use the icon name with the <code>ti-<\/code> prefix.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">How the homepage grid works<\/h2>\n\n\n<p>The Categories section on the homepage shows up to 8 sub-categories of &#8220;Listings&#8221;, ordered by post count (most-populated first). To control the order manually:<\/p>\n\n\n<ol class=\"wp-block-list\">\n<li>Add a <code>term_order<\/code> to each category via SQL or the Advanced Custom Fields plugin.<\/li>\n<li>Or filter the query:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\"><code>add_filter( &#039;best_classifieds_homepage_categories_args&#039;, function( $args ) {\n    $args[&#039;orderby&#039;] = &#039;name&#039;;      \/\/ or &#039;slug&#039;, &#039;count&#039;\n    $args[&#039;order&#039;]   = &#039;ASC&#039;;\n    $args[&#039;number&#039;]  = 6;            \/\/ show only 6\n    return $args;\n} );<\/code><\/pre>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Locations<\/h2>\n\n\n<p>Locations are stored in the <code>_bc_location<\/code> post meta as a free-text field (&#8220;Brooklyn, NY&#8221;). The WOW Feeder also writes <code>_bc_lat<\/code> and <code>_bc_lng<\/code> for OSM map rendering on the listing detail page.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Why not a custom taxonomy?<\/h3>\n\n\n<p>We tried it. It adds complexity (term creation UX, choosing parent regions, normalizing input) that hurts most marketplaces more than it helps. A free-text field with city\/state autocomplete is faster for sellers and simpler for buyers.<\/p>\n\n\n<p>That said, if you&#8217;re a country\/region-specific marketplace (e.g. India-only with state filtering), Pro adds an optional <code>listing_location<\/code> taxonomy:<\/p>\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Classifieds Pro \u2192 Settings \u2192 Taxonomies<\/strong>.<\/li>\n<li>Toggle <strong>Enable location taxonomy<\/strong>.<\/li>\n<li>Add your locations under <strong>Listings \u2192 Locations<\/strong>.<\/li>\n<li>The submission form gets a location dropdown, the search dropdown gets location filters.<\/li>\n<\/ol>\n\n\n<h3 class=\"wp-block-heading\">Auto-extracting city from <code>_bc_location<\/code><\/h3>\n\n\n<p>The trust strip on the homepage shows &#8220;X cities served&#8221; by counting distinct <code>_bc_location<\/code> values. If your free-text values are inconsistent (&#8220;NYC&#8221; vs &#8220;New York&#8221; vs &#8220;Manhattan, NY&#8221;), the count will be inflated. The simple fix: nudge sellers toward a consistent format with a placeholder:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>add_filter( &#039;best_classifieds_location_placeholder&#039;, function() {\n    return &#039;City, State (e.g. Brooklyn, NY)&#039;;\n} );<\/code><\/pre>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Category archive pages<\/h2>\n\n\n<p>Category archive URL: <code>\/category\/{slug}\/<\/code> (or <code>\/listing-category\/{slug}\/<\/code> for the Pro CPT).<\/p>\n\n\n<p>The archive uses <code>archive.php<\/code> with full-width grid layout (sidebar is suppressed for listing categories). To customize the archive header or filters, edit <code>archive.php<\/code> in a child theme.<\/p>\n\n\n<p>Each archive shows:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>A clean breadcrumb: Home \u203a Property<\/li>\n<li>A title: &#8220;Category: Property&#8221;<\/li>\n<li>The category description (if set)<\/li>\n<li>All listings in a 3-column grid (4 columns at 1680px+)<\/li>\n<li>Pagination at the bottom<\/li>\n<\/ul>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h2 class=\"wp-block-heading\">Renaming the parent &#8220;Listings&#8221; category<\/h2>\n\n\n<p>If you want to call it &#8220;Ads&#8221;, &#8220;Posts&#8221;, or anything else:<\/p>\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Posts \u2192 Categories<\/strong> \u2192 click &#8220;Listings&#8221;.<\/li>\n<li>Change the <strong>Name<\/strong> (the slug stays the same).<\/li>\n<li>The display label changes everywhere; the slug-based URLs and code references continue to work.<\/li>\n<\/ol>\n\n\n<p>To also change the slug (e.g. <code>listings<\/code> \u2192 <code>ads<\/code>), update the slug too \u2014 but be aware that the WOW Feeder + Pro plugin reference the slug via the <code>best_classifieds_get_listings_category_slug()<\/code> filter:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>add_filter( &#039;best_classifieds_listings_category_slug&#039;, function() {\n    return &#039;ads&#039;;\n} );<\/code><\/pre>\n\n\n<p>After changing the slug, set up a 301 redirect from <code>\/category\/listings\/<\/code> to <code>\/category\/ads\/<\/code> to preserve any existing inbound links.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Categories are how visitors browse your marketplace. Locations are how they filter by city\/region. Best Classifieds uses standard WordPress categories for the free theme (with an optional listingcategory\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-45","post","type-post","status-publish","format-standard","hentry","category-getting-started"],"_links":{"self":[{"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/posts\/45","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":0,"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"wp:attachment":[{"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.fasterthemes.com\/best-classifieds-wordpress-theme\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}