City CMS
WordPress plugin til at oprette og administrere byer som Custom Post Type
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/mhodk/city-cms/archive/refs/heads/main.zipByer CMS (City CMS Plugin)
Et WordPress-plugin til at oprette, administrere og vise "byer" som en Custom Post Type (CPT). Plugin'et gør det muligt at oprette by-sider med bynavn, postnummer og indhold – med automatisk genereret slug og oversigtsvisning.
Funktioner
- Opretter en ny post type: By (city)
- Meta-felter til bynavn og postnummer
- Automatisk SEO-venlig slug baseret på bynavn og postnummer
- Understøttelse af single template (
single-city.php) - Shortcode
[byer_oversigt]til visning af alle byer i en oversigt - Indstillingsside under "Byer → Indstillinger"
- Kompatibel med Elementor (Theme Builder anvendes kun, hvis der oprettes en specifik template)
Installation
- Upload plugin-mappen til
/wp-content/plugins/city-cms/ - Aktivér plugin'et via Plugins → Aktiver i WordPress
- Et nyt menupunkt "Byer" vises i adminmenuen
- Gå til Byer → Indstillinger for at ændre slug (standard er
byer)
Funktionalitet
1. Custom Post Type: city
Plugin'et registrerer en ny post type med følgende parametre:
- Navn: Byer
- Slug:
/byer/ - URL-struktur:
/byer/[by-navn]-[postnummer]/ - Understøtter titel og WordPress-editor
- Metafelter:
_city_postal_code(postnummer)_city_name(bynavn)
Slug dannes automatisk, når du gemmer en by. Eksempel: roskilde (bynavn) + 4000 (postnummer) → /byer/roskilde-4000/
2. Metabox-felter
Ved redigering af en by vises to ekstra felter:
- Byens navn
- Postnummer
Disse bruges til slug-generering, sortering i oversigten og evt. visning på frontend.
Metaboxene findes i includes/metabox.php.
3. Single template (frontend-visning)
- Filnavn:
single-city.php - Viser titel og indhold (ingen dato eller forfatter)
- Bruges automatisk til visning af en enkelt by (fx
/byer/roskilde-4000/)
Vigtigt: Filen single-city.php ligger i plugin-rodmappen. WordPress loader ikke templates direkte fra plugins, så filen skal flyttes manuelt til det aktive (eller child-)tema:
/wp-content/themes/[dit-tema]/single-city.php
Når filen ligger dér, anvendes den automatisk til visning af city-posts.
4. Shortcode: [byer_oversigt]
Indsæt shortcoden på en vilkårlig side eller et indlæg for at vise en oversigt over alle byer.
[byer_oversigt]
Output: En simpel tabel med byer sorteret alfabetisk efter bynavn. Tre kolonner pr. række (autojusteret). Hver by linker til sin egen side. Koden findes i includes/shortcodes.php.
5. Indstillinger
Der findes en indstillingsside under Byer → Indstillinger. Her kan du ændre basis-slug (standard: cities).
Ændringen opdaterer automatisk permalink-strukturen. Indstillingssiden findes i pages/settings.php.
6. Elementor / Theme Builder-kompatibilitet
Hvis der ikke findes en Elementor-template for "Byer", anvendes single-city.php.
Hvis en designer opretter en "Single City" template i Elementor, overtager Elementor automatisk visningen.
Ingen yderligere opsætning er nødvendig.
Filstruktur
city-cms/
│
├── city-cms-plugin.php # Hovedplugin-fil
│
├── includes/
│ ├── post-type.php # Registrerer CPT 'city'
│ ├── metabox.php # Meta-felter til postnummer og bynavn
│ ├── admin-menu.php # Tilføjer indstillingsmenu under "Byer"
│ └── shortcodes.php # Shortcode [byer_oversigt]
│
├── pages/
│ └── settings.php # Indstillingsside
│
└── single-city.php # Template til visning af enkelt by
Brugseksempel
Opret en by:
- Gå til Byer → Tilføj ny
- Udfyld: Titel, Byens navn (metafelt), Postnummer (metafelt), Tekst i editoren
- Klik "Udgiv" – slug genereres automatisk som fx
/byer/roskilde-4000/
Vis en by: Gå til URL'en: https://ditdomæne.dk/byer/roskilde-4000/
Vis oversigten: Opret en ny side (fx "Vores byer") og indsæt:
[byer_oversigt]
Siden viser herefter en tabel med alle oprettede byer.
Udviklernoter
- CPT-slug kan ændres via plugin-indstillingerne
- Rewrite-rules flushes automatisk ved ændring af slug
- Single template placeres i temaet, så designere kan tilpasse layout uden at ændre plugin'et
- Alle funktioner, actions og filters er navngivet med
city_cms_-prefix for at undgå konflikter
Fejlfinding
| Problem | Løsning |
|---|---|
| By-URL viser /index.php/ | Gå til Indstillinger → Permanente links og gem igen |
| single-city.php bruges ikke | Sørg for at filen ligger i /themes/[tema]/single-city.php |
| Oversigten viser ingenting | Tjek at der findes publicerede city-posts |
| Ændret slug træder ikke i kraft | Gem ændringer i Permanente links for at flush'e rewrite rules |
Krav
- WordPress 6.0 eller nyere
- PHP 7.4 eller nyere
- Et tema med standard template-hierarki (eller child theme)
- (Valgfrit) Elementor-kompatibilitet
Forfatter
Udviklet af: mhoDK Version: 1.4.0 Licens: GPL v2 eller nyere
Releases
1 release.
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.