HTML naar Worpress

fbijltje

Gebruiker
Lid geworden
23 mei 2004
Berichten
303
Wie weet een handige methode om een website met veel html pagina's te importeren naar wordpress?
 
Aan chatgpt vragen de losse html pagina's om te zetten naar wordpress templates is een optie, maar hoe dan ook is het handwerk. Er zijn wel een aantal sites die dat doen en die vragen er natuurlijk geld voor.
 
Een leuk idee, @fbijltje. Het is alleen niet zo eenvoudig dan het lijkt. En was het maar zo makkelijk, dan had elke webdesignbureau binnen een paar uurtjes een website af.... Haha!

- Allereerst moet de content uit de HTML-pagina's in de database worden geplaatst
- Vervolgens moet je de layout omzetten naar templates in een Wordpress-theme
- Je moet nog logica toevoegen aan je template.
- Je moet de navigatie naar de juiste pagina;s laten linken.

Als je dit snel wilt doen, dan zou je denk ik beter moeten investeren in een AI-agent.

Als je zin hebt......

Opdracht: bestaande HTML-site omzetten naar een volwaardig WordPress Theme​

Je krijgt een bestaande, werkende HTML/CSS/JavaScript-website. Zet deze website om naar een professioneel, onderhoudbaar WordPress Theme, waarbij het bestaande design, de layout en het gedrag van de huidige website zo nauwkeurig mogelijk behouden blijven.

Het doel is niet om simpelweg de HTML-bestanden in WordPress te plaatsen, maar om een echte WordPress-implementatie te bouwen waarbij alle dynamische content vanuit de WordPress-database komt en beheerders de content via de WordPress Admin kunnen aanpassen.


1. Analyseer eerst de bestaande website​

Voordat je code gaat aanpassen:

  1. Inspecteer alle aanwezige HTML-, CSS-, JavaScript-, image-, font- en overige asset-bestanden.
  2. Breng de structuur van de website in kaart:
    • pagina's
    • headers
    • footers
    • navigatie
    • hero-secties
    • contentblokken
    • kaarten/cards
    • formulieren
    • CTA's
    • afbeeldingen
    • iconen
    • eventuele sliders/carrousels
    • responsive gedrag
  3. Bepaal welke onderdelen:
    • globale onderdelen zijn;
    • pagina-specifiek zijn;
    • herbruikbare componenten zijn;
    • dynamische content bevatten.
  4. Identificeer alle hardcoded content die uiteindelijk uit WordPress moet komen.
  5. Controleer ook alle links, formulieren, JavaScript-functionaliteit en externe dependencies.
Maak eerst een kort implementatieplan voordat je grote wijzigingen uitvoert.


2. Bouw een echte WordPress Theme​

Maak een zelfstandig WordPress theme met een duidelijke en onderhoudbare structuur.

Gebruik waar passend een structuur zoals:

theme-name/
├── style.css
├── functions.php
├── index.php
├── front-page.php
├── home.php
├── page.php
├── single.php
├── archive.php
├── 404.php
├── header.php
├── footer.php
├── sidebar.php
├── screenshot.png

├── template-parts/
│ ├── components/
│ ├── sections/
│ └── content/

├── inc/
│ ├── setup.php
│ ├── enqueue.php
│ ├── custom-post-types.php
│ ├── custom-fields.php
│ └── helpers.php

├── assets/
│ ├── css/
│ ├── js/
│ ├── images/
│ ├── fonts/
│ └── icons/

└── languages/

Pas deze structuur aan als een betere WordPress-architectuur gewenst is.

Gebruik WordPress-conventies en zorg dat de code begrijpelijk en onderhoudbaar is.


3. Behoud het bestaande design zo exact mogelijk​

Het uiteindelijke WordPress-theme moet visueel zo dicht mogelijk bij de originele HTML-site liggen.

Behoud waar mogelijk:

  • kleuren
  • fonts
  • font sizes
  • font weights
  • line heights
  • margins
  • paddings
  • borders
  • border radii
  • shadows
  • grid/layout
  • container widths
  • afbeeldingen
  • iconen
  • hover states
  • transitions
  • animaties
  • responsive breakpoints
  • mobile menu
  • sliders/carrousels
  • interactieve elementen
Verander het design niet omdat je zelf een andere oplossing mooier vindt.

De bestaande website is het visuele uitgangspunt.

Gebruik CSS zo veel mogelijk centraal en voorkom onnodige inline styles.


4. Maak content dynamisch​

Dit is een belangrijk onderdeel van de opdracht.

Content mag niet hardcoded in de theme templates staan als deze door een websitebeheerder gewijzigd moet kunnen worden.

Bijvoorbeeld:

<h1>Welkom bij ons bedrijf</h1>
mag niet simpelweg zo in front-page.php blijven staan.

Maak hiervan bijvoorbeeld WordPress-content:

<?php the_title(); ?>
of gebruik geschikte custom fields / blocks wanneer het om specifieke content gaat.

Denk hierbij aan:

  • pagina-titels
  • teksten
  • afbeeldingen
  • CTA's
  • buttons
  • links
  • testimonials
  • teamleden
  • diensten
  • projecten
  • nieuwsartikelen
  • contactgegevens
  • social media links
  • hero-content
  • section headings
  • section descriptions

5. Gebruik de WordPress database correct​

Alle beheersbare content moet uiteindelijk in de WordPress-database worden opgeslagen.

Gebruik hiervoor waar passend:

WordPress Pages / Posts​

Gebruik standaard WordPress content types als dat logisch is.

Custom Post Types​

Maak Custom Post Types voor content die een eigen entiteit vormt.

Bijvoorbeeld:

Diensten
Projecten
Teamleden
Testimonials
Cases
FAQ
Maak alleen Custom Post Types als daar daadwerkelijk een goede reden voor is.

Custom Fields​

Gebruik custom fields voor gestructureerde data, bijvoorbeeld:

hero_title
hero_subtitle
hero_image
button_text
button_url
phone
email
company_address
Als een externe plugin zoals ACF beschikbaar is, mag je die gebruiken als dat de beste oplossing is. Zorg er wel voor dat de site niet onnodig afhankelijk wordt van plugins.

Als je custom fields zonder externe plugin kunt implementeren, heeft dat de voorkeur wanneer dit eenvoudig en onderhoudbaar blijft.


6. Denk goed na over globale content​

Content die op meerdere pagina's voorkomt moet niet op iedere pagina afzonderlijk worden opgeslagen.

Denk bijvoorbeeld aan:

  • logo
  • bedrijfsnaam
  • telefoonnummer
  • e-mailadres
  • adres
  • social media
  • footer-content
  • copyright
  • algemene CTA
  • navigatie
Gebruik hiervoor bijvoorbeeld:

  • WordPress Customizer, indien passend;
  • theme options;
  • een settings page;
  • of een andere nette WordPress-oplossing.
Maak geen onnodige duplicatie van dezelfde content.


7. Navigatie​

De bestaande navigatie moet worden omgezet naar een echte WordPress-menu-implementatie.

Gebruik bijvoorbeeld:

register_nav_menus()
en:

wp_nav_menu()
De beheerder moet het menu vanuit WordPress kunnen beheren.

Ondersteun waar nodig:

  • dropdowns
  • actieve pagina states
  • mobile navigation
  • keyboard navigation
Behoud het bestaande uiterlijk.


8. Afbeeldingen en media​

Gebruik de WordPress Media Library.

Afbeeldingen mogen niet uitsluitend naar een statische theme-map verwijzen wanneer ze door een beheerder gewijzigd moeten kunnen worden.

Gebruik bijvoorbeeld:

wp_get_attachment_image()
waar passend.

Let op:

  • alt-teksten
  • responsive images
  • correcte image sizes
  • lazy loading waar geschikt
  • WebP/AVIF indien WordPress dit ondersteunt
  • geen onnodig grote afbeeldingen laden

9. JavaScript​

Migreer bestaande JavaScript-functionaliteit naar WordPress.

Gebruik:

wp_enqueue_script()
en laad scripts niet hardcoded in HTML.

Controleer:

  • dependencies
  • load order
  • defer waar geschikt
  • mobile menu
  • sliders
  • modals
  • animations
  • forms
  • eventuele AJAX-functionaliteit
Gebruik JavaScript alleen waar nodig.


10. CSS​

Gebruik:

wp_enqueue_style()
voor stylesheets.

Vermijd:

  • enorme inline CSS-blokken;
  • dubbele CSS;
  • ongebruikte CSS waar eenvoudig op te schonen;
  • !important tenzij echt noodzakelijk;
  • hardcoded absolute URLs.
Behoud het oorspronkelijke design.


11. WordPress coding standards​

Schrijf code volgens gangbare WordPress-principes.

Gebruik onder andere:

esc_html()
esc_attr()
esc_url()
wp_kses_post()
sanitize_text_field()
waar relevant.

Let op:

  • escaping
  • sanitization
  • nonces
  • capability checks
  • veilige database queries
  • geen directe SQL als WordPress API's voldoende zijn
  • geen onveilige user input
De theme moet veilig zijn tegen veelvoorkomende WordPress/PHP-problemen.


12. SEO​

Behoud bestaande SEO-relevante informatie zoveel mogelijk.

Denk aan:

  • correcte heading hierarchy
  • één logische H1 per pagina
  • semantic HTML
  • title tags
  • meta descriptions
  • canonical URLs
  • Open Graph data
  • alt teksten
  • correcte interne links
  • redirects wanneer URL's veranderen
Gebruik geen eigen SEO-systeem als een bestaande SEO-plugin dit normaal gesproken verzorgt.

Het theme moet goed samenwerken met populaire SEO-plugins.


13. URLs en redirects​

Bestaande URL's moeten zoveel mogelijk behouden blijven.

Als URL's veranderen:

  1. identificeer de oude URL;
  2. bepaal de nieuwe URL;
  3. zorg voor een 301 redirect;
  4. voorkom broken links.
Controleer alle interne links.

Gebruik geen hardcoded domeinnaam.

Gebruik bijvoorbeeld:

home_url()
site_url()
get_permalink()
waar passend.


14. Responsive design​

De bestaande responsive functionaliteit moet behouden blijven.

Test minimaal:

  • desktop
  • laptop
  • tablet
  • mobile
Controleer specifiek:

  • navigatie
  • typography
  • images
  • cards
  • grids
  • buttons
  • forms
  • spacing
  • overflow
  • horizontaal scrollen
  • touch interactions
Gebruik de bestaande breakpoints als deze aanwezig zijn.


15. Accessibility​

Verbeter accessibility waar dit kan zonder het bestaande design te veranderen.

Denk aan:

  • semantic HTML
  • correcte headings
  • alt attributes
  • keyboard navigation
  • focus states
  • buttons versus links
  • ARIA alleen wanneer nodig
  • voldoende contrast
  • formulieren met labels
  • skip link
Streef naar een goede WCAG-conforme implementatie.
 
Laatst bewerkt:
En de volgende stappen:

16. Performance​

Maak het theme performant.

Let op:

  • minimale hoeveelheid JavaScript
  • CSS zo efficiënt mogelijk laden
  • alleen benodigde assets laden
  • lazy loading van afbeeldingen
  • responsive images
  • fonts efficiënt laden
  • geen render-blocking resources als dat eenvoudig te voorkomen is
  • geen onnodige libraries
  • geen dubbele assets
Voorkom dat de conversie van HTML naar WordPress de site onnodig trager maakt.


17. Formulieren​

Als de oorspronkelijke website formulieren bevat:

  • behoud het bestaande design;
  • zorg dat ze daadwerkelijk functioneren;
  • valideer input;
  • bescherm tegen spam;
  • gebruik nonces waar relevant;
  • geef duidelijke succes- en foutmeldingen.
Hardcode geen e-mailadressen in JavaScript.

Gebruik een WordPress-compatibele oplossing.


18. Hardcoded data opsporen​

Voer na de implementatie een controle uit op hardcoded content.

Zoek onder andere naar:

hardcoded teksten
hardcoded URLs
hardcoded e-mailadressen
hardcoded telefoonnummers
hardcoded afbeeldingen
hardcoded menu-items
hardcoded bedrijfsgegevens
Bepaal per item of dit:

  1. bewust statisch is;
  2. WordPress-content moet worden;
  3. een theme setting moet worden;
  4. een custom field moet worden;
  5. een Custom Post Type moet worden.

19. Geen afhankelijkheid van de oorspronkelijke HTML​

Het eindresultaat moet een echte WordPress-implementatie zijn.

Gebruik de oorspronkelijke HTML als referentie voor:

  • design
  • structuur
  • content
  • functionaliteit
maar kopieer niet simpelweg alle HTML-bestanden één-op-één naar WordPress.

Splits onderdelen op in herbruikbare WordPress-template parts.


20. Beheerbaarheid​

Een niet-technische WordPress-beheerder moet de belangrijkste content kunnen wijzigen zonder code te hoeven aanpassen.

Controleer daarom bijvoorbeeld:

Pagina bewerken → content aanpassen → opslaan → frontend toont nieuwe content.

Dit moet werken voor alle belangrijke dynamische onderdelen.


21. Database/content migratie​

Als de bestaande HTML-site al content bevat die naar WordPress moet worden overgezet:

  1. identificeer alle content;
  2. bepaal waar deze in WordPress hoort;
  3. migreer de content;
  4. migreer afbeeldingen;
  5. koppel afbeeldingen correct aan de Media Library;
  6. controleer formatting;
  7. controleer links;
  8. controleer speciale tekens en encoding.
Maak waar nodig een eenmalig migratiescript.

Een migratiescript mag na succesvolle migratie worden verwijderd of buiten productie worden gehouden.

Verwijder geen bestaande content voordat je hebt gecontroleerd dat de migratie succesvol is.


22. Maak geen onnodige plugin-afhankelijkheden​

Gebruik WordPress core-functionaliteit waar mogelijk.

Voeg alleen een plugin-afhankelijkheid toe wanneer die daadwerkelijk waarde toevoegt.

Als een plugin noodzakelijk is, documenteer:

  • welke plugin;
  • waarom deze nodig is;
  • welke functionaliteit hiervan afhankelijk is.

23. Fallbacks​

Het theme moet netjes blijven functioneren wanneer content ontbreekt.

Bijvoorbeeld:

  • ontbrekende afbeelding;
  • lege subtitle;
  • geen CTA;
  • lege custom field;
  • geen testimonials;
  • geen featured image.
Voorkom lege HTML-elementen en PHP warnings.


24. Error handling​

Zorg dat:

  • PHP warnings/errors worden voorkomen;
  • ontbrekende data netjes wordt afgehandeld;
  • ontbrekende afbeeldingen geen broken layout veroorzaken;
  • invalid URLs niet tot fouten leiden;
  • custom fields gecontroleerd worden voordat ze gebruikt worden.

25. Maak een duidelijke component-architectuur​

Herbruikbare elementen moeten niet meerdere keren volledig worden gekopieerd.

Bijvoorbeeld:

template-parts/
hero.php
card.php
testimonial.php
cta.php
section-heading.php
Gebruik WordPress template parts of vergelijkbare mechanismen.


26. Gutenberg / WordPress editor​

Denk na over welke onderdelen de beheerder via de WordPress editor moet kunnen aanpassen.

Gebruik waar passend:

  • Gutenberg blocks;
  • native WordPress editor;
  • custom fields;
  • Custom Post Types.
Maak niet alles een custom block als dat onnodig complex is.

De oplossing moet onderhoudbaar blijven.


27. Behoud semantische HTML​

Gebruik correcte HTML5-elementen zoals:

<header>
<nav>
<main>
<section>
<article>
<footer>
waar passend.

Gebruik geen <div> voor alles als een semantisch element beschikbaar is.


28. Browser compatibility​

Controleer de website in moderne browsers:

  • Chrome
  • Firefox
  • Safari
  • Edge
Controleer vooral CSS features en JavaScript die mogelijk browserafhankelijk zijn.


29. Testing / QA​

Voer na de conversie een volledige controle uit.

Controleer minimaal:

Functionaliteit​

  • Homepage
  • Alle pagina's
  • Navigatie
  • Dropdowns
  • Mobile menu
  • Buttons
  • Links
  • Formulieren
  • Sliders
  • Animaties
  • Search indien aanwezig
  • 404 pagina

WordPress​

  • Theme activeert zonder errors
  • Pagina's werken
  • Posts werken
  • Media Library werkt
  • Menu's werken
  • Permalinks werken
  • Content is wijzigbaar vanuit Admin
  • Custom fields werken
  • Custom Post Types werken

Visual​

Vergelijk de WordPress-versie met de oorspronkelijke HTML-versie.

Controleer:

  • spacing
  • typography
  • kleuren
  • images
  • layout
  • responsive gedrag
  • hover states
  • mobile layout

Technisch​

  • Geen PHP errors
  • Geen JavaScript errors in console
  • Geen 404 assets
  • Geen broken links
  • Geen mixed content
  • Geen hardcoded domein
  • Geen onnodige dependencies
  • Geen ongebruikte oude HTML-bestanden

30. Visuele vergelijking​

Gebruik de originele website als visual reference.

Als je screenshots kunt maken van de originele en nieuwe versie, vergelijk deze op:

  • positionering
  • afmetingen
  • spacing
  • kleuren
  • fonts
  • responsive gedrag
Corrigeer afwijkingen totdat de WordPress-versie visueel zo goed mogelijk overeenkomt.

"Functioneel hetzelfde" is niet voldoende; het uiterlijk moet eveneens zo exact mogelijk worden gereproduceerd.


31. Eindresultaat​

Lever uiteindelijk een compleet WordPress theme op dat:

  1. direct in WordPress geïnstalleerd kan worden;
  2. het oorspronkelijke design behoudt;
  3. responsive is;
  4. content uit de database haalt;
  5. via WordPress Admin beheerd kan worden;
  6. geen onnodige hardcoded content bevat;
  7. veilig is;
  8. SEO-vriendelijk is;
  9. performant is;
  10. toegankelijk is;
  11. onderhoudbaar is;
  12. geen onnodige afhankelijkheid heeft van de oorspronkelijke HTML-site.

32. Documentatie​

Maak daarnaast een korte README.md met:

  • installatie-instructies;
  • benodigde plugins;
  • theme structuur;
  • uitleg van Custom Post Types;
  • uitleg van custom fields;
  • waar globale instellingen worden beheerd;
  • waar belangrijke componenten staan;
  • eventuele migratiestappen;
  • eventuele bekende beperkingen.

Belangrijke werkwijze​

Werk gefaseerd:

Fase 1 — Analyse​

Analyseer de volledige bestaande website en maak een implementatieplan.

Fase 2 — Architectuur​

Bepaal:

  • templates;
  • components;
  • WordPress content types;
  • custom fields;
  • globale settings;
  • assets.

Fase 3 — Theme​

Bouw het WordPress theme.

Fase 4 — Content​

Migreer de bestaande content naar de WordPress database.

Fase 5 — Functionaliteit​

Migreer JavaScript, formulieren, navigatie en interactieve elementen.

Fase 6 — Responsive/visual QA​

Vergelijk de WordPress-versie met het origineel.

Fase 7 — Security/SEO/performance​

Voer technische controles uit.

Fase 8 — Final QA​

Test de volledige website en los gevonden problemen op.


Belangrijkste uitgangspunt​

De WordPress-site moet voor de eindgebruiker visueel en functioneel hetzelfde aanvoelen als de oorspronkelijke HTML-site, maar technisch volledig gebruikmaken van WordPress als CMS.

Dus:

HTML-site
→ design + bestaande content + functionaliteit

WordPress
→ templates + database + CMS + beheer + dynamische content

Maak geen simpele HTML-wrapper rond WordPress. Bouw een echte, onderhoudbare WordPress theme-implementatie.
 
Ligt eraan hoeveel pagina's het zijn. Ik heb weleens een html website overgezet naar WP, en dus alles met de hand gedaan.
Dus geef eens aan hoeveel pagina's het zijn.

Eerst een WP theme uitzoeken. Als je wilt dat de WP-site er hetzelfde uitziet als je oude statische site, dan moet je een thema zoeken dat erop lijkt. Daarna pagina's aanmaken met daarin de teksten (kopie en plak).

Je huidige pagina's in html kan je via hier https://www.striphtml.com/ schoonmaken, zodat kopie en plak makkelijker wordt.
Verwijder de originele HTML-pagina's niet. Schakel in plaats daarvan gewoon het domein over zodra je de WordPress-website klaar hebt.
 
Terug
Bovenaan Onderaan