Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
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.