Ruhler Community Resource Directory

Description

Ruhler Community Resource Directory lets any nonprofit or community service organization — a food bank, a clothing closet, a legal-aid clinic, a tutoring program, a health clinic network — manage its physical locations and the services offered at each one, entirely from wp-admin, and publish an accessible public directory that visitors can search and filter.

Every core feature works on a plain WordPress installation. No API key, account, or paid service is required to publish a complete, useful directory.

Manage your locations in wp-admin

  • A dedicated “Resource Locations” area in wp-admin, using WordPress’s own familiar publish/draft/trash workflow — no separate approval step, no new login for your staff to learn.
  • A “Services Offered” taxonomy so you can organize and later filter locations by the services each one provides.
  • Address and contact fields (street, city, state, postal code, phone, website).
  • A weekly hours editor supporting hours-not-provided, closed, specific open/close times (including overnight hours that run past midnight), and open-24-hours — plus dated exceptions for a specific day (for example, a holiday closure) that override the regular weekly schedule.
  • Map coordinates for a location are entered by hand in this version. There is no automatic address-to-coordinates lookup yet (see “What this version does not include” below).
  • A one-time, dismissible reminder on your Dashboard confirms your directory page is live and points you to “Add your first location.” It disappears permanently once you publish your first location, and never appears anywhere except the Dashboard and Plugins screens.

What visitors see

  • A searchable, filterable public directory: search by name, description, city, state, or ZIP/postal code; filter by service; and an “Open Now” toggle — all without JavaScript. Every one of these is a real page reload with a real URL, so it works exactly the same with JavaScript on or off.
  • Locations are always listed with the ones open right now first, then locations opening later today, then closed, then locations with no hours entered yet — so a visitor never has to hunt through closed locations to find one that’s actually open.
  • Each location shows its current status in plain language — “Open now,” “Open until 5:00 pm,” “Opens at 9:00 am,” “Opens later today,” “Closed today,” “Open 24 hours,” or “Today’s hours unavailable” when hours simply haven’t been entered yet.
  • An individual page for every location — name, status, description, services, address, phone, website, weekly hours, and any upcoming schedule exceptions — instead of the generic blog-post layout (author byline, post navigation, comments) WordPress would otherwise use. This replacement page works the same way on both classic and block themes, and your theme can override it (see the FAQ).
  • “Near Me,” an optional, visitor-initiated distance sort. Nothing happens until a visitor clicks “Use my location” — no background or automatic location request is ever made. Near Me works whether or not the map is turned on.
  • An optional map view, described fully in “Map privacy” below.

Add it to a page

Two ways to publish the directory, and both support the same options:

  • The [crd_locator_finder] shortcode.
  • A “Resource Directory Finder” block in the block editor’s inserter, with the same settings available as a visual panel instead of shortcode attributes.

By default, either one shows every published location with no restrictions. Two optional settings let you scope a single instance of the directory:

  • Limit to one service — shortcode: [crd_locator_finder service="legal-aid"] (using the service’s slug); block: the “Limit to one service” dropdown in the block’s settings panel. Once set, that instance only ever shows locations offering that service — visitors cannot switch it to another service or back to “All services,” and a search or “Open Now” filter a visitor applies still only searches within that one service. This is meant for a page dedicated to one kind of help (for example, a “Find Legal Aid” page), not a general-purpose filter a visitor can change.
  • Maximum locations to show — shortcode: [crd_locator_finder count="5"]; block: the “Maximum locations to show” setting. Shows only the top N locations (by the same open-first ordering described above). Leave it at 0, or omit it, to show every matching location with no limit.

Both settings can be combined, and you can place as many separately-configured instances of the shortcode or block on your site as you like — each one works independently.

Map privacy

The map is a completely optional feature, off by default. Turning it on is a deliberate, informed choice:

  • Map mode does nothing until an administrator visits the map settings screen, chooses a tile provider (a ready-made OpenStreetMap option, or your own self-hosted/other compatible server), and explicitly checks an acknowledgment box after reading the disclosure shown on that same screen. That acknowledgment is required again any time the provider, URL, or attribution text changes.
  • The map-drawing library (Leaflet, an open-source project) is bundled with this plugin. It is never loaded from an external CDN.
  • The ready-made OpenStreetMap option requests tiles from OpenStreetMap’s tile service, subject to the OpenStreetMap tile usage policy and OpenStreetMap Foundation privacy policy. If you configure a different provider, review that provider’s terms and privacy policy before enabling it.
  • Once enabled, a visitor’s own browser requests map tile images directly from whichever provider you chose. Tile requests necessarily reveal the approximate map area being viewed, and the provider also receives the ordinary information any web request carries (such as IP address and browser information), subject to that provider’s own policies. Resource names, descriptions, addresses, phone numbers, and every other database record from your directory are never included in a tile request.
  • Near Me is entirely separate from the map and does not require it. A visitor’s location, when they choose to share it, is read directly from their browser and used only in that browser to sort the list by distance for that page view. This plugin does not store it, and does not send it anywhere — not to this plugin’s own site, and not to the map tile provider.

What this version does not include

  • Automatic geocoding or address verification. Coordinates are entered by hand (see above).
  • Importing locations from a spreadsheet or an external service’s API.
  • Any integration with a third-party provider database.
  • Built-in analytics or reporting.
  • A ZIP-radius search backed by a postal-code distance dataset (search and Near Me both work today; a dedicated ZIP-radius dataset is not included).
  • Any automatic, ongoing synchronization with an external data source.

None of the above requires an account, subscription, or API key to use this plugin’s current features — they are simply not part of this version.

Screenshots

Blocks

This plugin provides 1 block.

  • Resource Directory Finder Displays the searchable, filterable community resource directory — the same experience as the [crd_locator_finder] shortcode.

Installation

  1. Upload the plugin files to /wp-content/plugins/ruhler-community-resource-directory, or install it through the WordPress “Add New Plugin” screen directly.
  2. Activate the plugin through the “Plugins” screen in WordPress. Activation only registers the location and service-taxonomy types this plugin needs — it never creates a page, never adds sample content, and never makes an outbound request.
  3. Go to “Resource Locations” in the wp-admin menu and add your first location: name, address, phone, website, weekly hours, and any services it offers. Publish it the same way you’d publish a WordPress post.
  4. Add the [crd_locator_finder] shortcode, or the “Resource Directory Finder” block, to any page or post to display your public directory.
  5. Optional: visit “Services Offered” to add more service categories, so visitors can filter by them.
  6. Optional: if you’d like a map alongside your list, go to the map settings screen, read the disclosure, choose a tile provider, and check the acknowledgment box.

That’s it — no API key, account, or additional setup is required for a working directory.

FAQ

Does this plugin require an API key or external account?

No. Every feature described above works on a stock WordPress installation with no external account, API key, or paid service.

What happens to my data if I deactivate or uninstall the plugin?

Deactivating never deletes any location, service, or setting data — your content is simply hidden until you reactivate. Uninstalling (removing the plugin from the Plugins screen) also preserves all of your location and service data; this version does not offer a way to make uninstall delete anything.

Can my theme control how an individual location page looks?

Yes. The plugin ships its own default page for each location so it never falls back to your theme’s generic blog-post layout. To override it:

  • On a classic (PHP-template) theme, add community-resource-directory/single-crd_locator_location.php (checked first) or single-crd_locator_location.php (checked second) to your active or child theme.
  • On a block theme, add a templates/single-crd_locator_location.html file to your active theme.

If your theme doesn’t provide either file, the plugin’s own built-in page is used.

Do I have to turn on the map to use this plugin?

No. Search, service filtering, Open Now, the individual location pages, and Near Me all work fully with the map turned off, which is the default. See “Map privacy” above for exactly what turning it on does.

Can I limit the directory on one page to a single service?

Yes — see “Add it to a page” above for the shortcode attribute and the equivalent block setting. Once set, that instance is locked to the chosen service; visitors cannot change it.

Does this plugin work with the block editor and with classic (PHP-based) themes?

Yes to both. The shortcode and the “Resource Directory Finder” block work identically. Individual location pages have a dedicated override path for each kind of theme (see above), so your active theme’s own header, footer, and styling are always used.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Ruhler Community Resource Directory” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

0.3.0

First public release. Earlier 0.1.0/0.2.0 version numbers were used only during internal development and were never published.

  • Native wp-admin location management with WordPress’s own publish/draft/trash workflow.
  • A “Services Offered” taxonomy for organizing and filtering locations.
  • Address, contact, weekly-hours, and dated-schedule-exception fields, including overnight and 24-hour schedules.
  • An availability-first directory order and plain-language “Open now / Open until / Opens at / Opens later today / Closed today / Open 24 hours” status.
  • Accessible search, service filtering, and an Open Now toggle — all functional with JavaScript disabled.
  • Visitor-initiated Near Me distance sorting, independent of map mode.
  • An optional, consent-gated map with a configurable tile provider (a ready-made OpenStreetMap preset, or a self-hosted/other compatible server) and a bundled, locally-hosted map library.
  • The [crd_locator_finder] shortcode and a “Resource Directory Finder” block, both supporting an optional fixed-service scope and a maximum-results limit.
  • A dedicated, theme-overridable individual location page for both classic and block themes.
  • A one-time, dismissible first-run reminder pointing to “Add your first location.”
  • Safe activation and deactivation, and a preserve-your-data-by-default uninstall.