{"id":5349,"date":"2026-01-28T21:18:58","date_gmt":"2026-01-28T19:18:58","guid":{"rendered":"https:\/\/peterteszary.com\/?p=5349"},"modified":"2026-01-28T21:19:33","modified_gmt":"2026-01-28T19:19:33","slug":"hogyan-epitettem-ujra-a-peterteszary-com-oldalt-2026-ban","status":"publish","type":"post","link":"https:\/\/peterteszary.com\/en\/hogyan-epitettem-ujra-a-peterteszary-com-oldalt-2026-ban\/","title":{"rendered":"How I Rebuilt Peterteszary.com in 2026"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Why did I reconstruct a working website?<\/h2>\n\n\n\n<p>The situation was simple: <strong>From a technical point of view, everything was fine with the site.<\/strong>, but as soon as I entered WordPress admin, I was in the mood to touch anything.<\/p>\n\n\n\n<p>The site did well in search engines, it was user-friendly, but the backend \u2013 here I mean the WordPress admin interface \u2013 <strong>You were the catastrophe<\/strong>. There is a saying that shoes always have holes in them. In my case, it was no different.<\/p>\n\n\n\n<p>The problem? <strong>36 active plugins<\/strong>, an opaque code base, and an admin interface where I was afraid to touch anything to keep it from falling apart.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The idea: Complete reconstruction<\/h3>\n\n\n\n<p>I wanted to write more articles on the site, create fresh content on a regular basis, and be present at all. But <strong>As soon as I entered the admin, I lost my temper.<\/strong>.<\/p>\n\n\n\n<p>I'm a member of some WordPress communities where a lot of people blink about what it's like. <strong>Minimum number of plugins<\/strong> They managed to create a page. And while I know it's irrelevant from a customer's point of view (the customer is looking at how it works, not how many plugins it has), <strong>There is a huge difference in my workflow.<\/strong>.<\/p>\n\n\n\n<p>That's why I decided: <strong>I'll clean the side. I'm off to a clean slate.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The problem of the plugin jungle<\/h2>\n\n\n\n<p><strong>36 active plugins<\/strong> He was on the side. That was untenable for me.<\/p>\n\n\n\n<p>What happened? Since people don't usually have time for their own things, I often do too. <strong>\u2018on the fly\u2019<\/strong> I've solved things. The result was that what could have been done with custom code with a bit of time, I put in a plugin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Double standards<\/h3>\n\n\n\n<p>Of course, I do not do this for clients \u2013 they pay for it, I plan every project thoroughly. But <strong>No one pays for my site.<\/strong>.<\/p>\n\n\n\n<p>The problem, however, is that <strong>This page is what you see for the first time.<\/strong>. If that's bad, they don't vote for trust anymore.<\/p>\n\n\n\n<p>That's why I forced myself to go through every little thing and <strong>Clean the Page Thoroughly<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Choosing the right stack<\/h2>\n\n\n\n<p>The end result? <strong>I reduced the number from 36 plugins to 21<\/strong> \u2013 and I want to reduce it further in the future.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What did I keep?<\/h3>\n\n\n\n<p><strong>Only plugins that:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>They provide real functionality (cannot be replaced by simple code)<\/li>\n\n\n\n<li>Actively developed and supported<\/li>\n\n\n\n<li>Optimized for performance<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What's left?<\/h3>\n\n\n\n<p>Of these 21, 6 have one. <strong>Free and a pro version<\/strong>. The free version is required for pro to work \u2013 chess is matte. But the point is, what I know, I'm still going to liquidate.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Code cleaning: From BEM to Utility classes<\/h2>\n\n\n\n<p>I have run into it several times <strong>\"how\"<\/strong> \u2013 I wanted the code to be as clear as possible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CSS framework switching: Automatic CSS \u2192 Core Framework<\/h3>\n\n\n\n<p>Previously on all projects <strong>Automatic CSS<\/strong> I used it. Now, however, the <strong>the Core Framework<\/strong> I switched. Why is that?<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>I wanted to immerse myself in it<\/strong> exercise consciously<\/li>\n\n\n\n<li><strong>Easier to set up<\/strong> the important things<\/li>\n\n\n\n<li><strong>Seems \"easier\"<\/strong> \u2013 Clearer structure<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">BEM Naming Convention<\/h3>\n\n\n\n<p>I followed it during development. <strong>the BEM Naming Convention<\/strong> (<a href=\"https:\/\/getbem.com\/naming\/\">getbem.com\/naming<\/a>It worked very well on the first two pages.<\/p>\n\n\n\n<p><strong>But after page three, I realized:<\/strong> There will be a lot of repetitive elements on the site, because a little <strong>more sales<\/strong> I wanted the wording \u2013 a lot of recurring formulas, the same layouts, the same sections.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utility Class approach<\/h3>\n\n\n\n<p>That's why I switched: <strong>I started thinking in Utility classes<\/strong> (<a href=\"https:\/\/tailwindcss.com\/docs\/utility-first\">Tailwind CSS Philosophy<\/a>).<\/p>\n\n\n\n<p><strong>Why is that good?<\/strong><\/p>\n\n\n\n<p>The Core Framework specifies the basic settings:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Spacing<\/li>\n\n\n\n<li>Padding, margin<\/li>\n\n\n\n<li>Font size<\/li>\n\n\n\n<li>Colors<\/li>\n\n\n\n<li>etc.<\/li>\n<\/ul>\n\n\n\n<p>But my <strong>My recurring elements don't require separate classes on each page<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Template Bundle approach<\/h3>\n\n\n\n<p>I made a <strong>template bundle<\/strong>, which practically means:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>I created all layouts on one page<\/strong> (arrangement) what you need on the entire website<\/li>\n\n\n\n<li><strong>I set everything up at class level<\/strong> \u2013 colours, dimensions, spacing<\/li>\n\n\n\n<li>That's what gave me the whole page. <strong>\u2018stuffed up\u2019<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Thanks to global Utility classes<\/strong> If I wanted to change something, I just <strong>I rewrote it at 1 place, class level<\/strong> \u2013 and voil\u00e0, the spell was done.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Outcome: 107 Utility class<\/h3>\n\n\n\n<p>I build all sides with this approach, but here the goal was to <strong>Minimize all CSS classes<\/strong> and thus the size of the code base.<\/p>\n\n\n\n<p><strong>I ended up with 107 Utility classes.<\/strong>, With which I covered the whole page.<\/p>\n\n\n\n<p>At the end of the work, the <strong>queried and deleted unused CSS classes<\/strong> \u2013 making the code even clearer.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Custom Post Types<\/h2>\n\n\n\n<p>I use it on my side as well. <strong>custom post types<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>References<\/li>\n\n\n\n<li>Contacts<\/li>\n\n\n\n<li>Information pages<\/li>\n\n\n\n<li>Glossary<\/li>\n<\/ul>\n\n\n\n<p>I fixed these, too. <strong>All that's left is what you really need.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Database Optimisation \u2013 Unseen Work<\/h2>\n\n\n\n<p>Because it's a close <strong>6-Year-Old Page<\/strong> (in 2016, by the way, I just had to completely re-draw it), a lot of plugins, settings, themes, code, cache files and everything else came and went.<\/p>\n\n\n\n<p>The database is quite <strong>\u2018saturated\u2019<\/strong> It was.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Manual cleaning<\/h3>\n\n\n\n<p>In many cases, cleaning can be done with an extension, but there are cases when the data <strong>Eat Yourself Into the Database<\/strong>, It needs to be cleaned manually.<\/p>\n\n\n\n<p><strong>Now, this work is still going on.<\/strong><\/p>\n\n\n\n<p>I'm thinking of something like this:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Website Auditor found more <strong>CDN broken links<\/strong>, Remaining from an old cache.<\/li>\n\n\n\n<li>I had to mine and clean them manually.<\/li>\n\n\n\n<li>Plenty of plugins create <strong>folders according to your preference<\/strong> \u2013 I had to find out and eliminate them too<\/li>\n<\/ul>\n\n\n\n<p>The work is still going on. <strong>Meticulous<\/strong>, but necessary.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The case of emojis \u2013 SVG conversion<\/h2>\n\n\n\n<p><strong>I hate emojis.<\/strong> Or at least I hated them until I understood their role.<\/p>\n\n\n\n<p>Many people know, love and use it. The website (technically) <strong>does not like<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why did I want to use them?<\/h3>\n\n\n\n<p>Because people <strong>Knowing and Recognising Immediately<\/strong> \u2013 if they come up to the site, the emojis immediately <strong>a familiar sight<\/strong> This can be a good basis of trust.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The technical problem<\/h3>\n\n\n\n<p>Yes, but all of them <strong>To be uploaded as SVG<\/strong>, because otherwise:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>They may be banned<\/li>\n\n\n\n<li>Some language plugins don't like to translate them<\/li>\n\n\n\n<li>It's useless to enter it with the appropriate HTML entity (<a href=\"https:\/\/www.w3schools.com\/html\/html_emojis.asp\">W3Schools emoji reference<\/a>)<\/li>\n<\/ul>\n\n\n\n<p><strong>So you had to upload an SVG version of each one.<\/strong> to the side.<\/p>\n\n\n\n<p>Checkmarks \u2713, X-s  \u2047 , question marks  \u2047  are not replaced everywhere yet... <strong>That's a good job.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Linguistics: Polylang \u2192 Web-T<\/h2>\n\n\n\n<p>Here I would turn to the <strong>languageisation<\/strong> on the subject.<\/p>\n\n\n\n<p>Although I work primarily for the Hungarian market, I would like to open a bigger one <strong>foreign market<\/strong> towards it. That is why, as in the past, I thought it was important to: <strong>Also available in English<\/strong> Let it be the side.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why did I switch from Polylang?<\/h3>\n\n\n\n<p>Previously on <strong>Polylang plugin<\/strong> I have solved this, but I do not like \u2018classic\u2019 language extensions because <strong>Duplicates are created<\/strong>.<\/p>\n\n\n\n<p>Optimal case <strong>I need two of everything<\/strong> in the case of a Hungarian-English site:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Page 2<\/li>\n\n\n\n<li>2 pictures<\/li>\n\n\n\n<li>2 templates<\/li>\n\n\n\n<li>Form 2<\/li>\n\n\n\n<li>2 all<\/li>\n<\/ul>\n\n\n\n<p><strong>He's a hell of a job.<\/strong> Even if you do it nicely, you still have to translate the content. It's so boring and time-consuming.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is it worth it?<\/h3>\n\n\n\n<p>Who knows. If suddenly there are two foreign orders that do not pay according to the Hungarian market trends, then maybe. But not like this.<\/p>\n\n\n\n<p><strong>From an SEO point of view?<\/strong> The Hungarian market is already saturated, and the foreign market is booming. So I let go of SEO from that point of view.<\/p>\n\n\n\n<p>I'd rather focus on <strong>if a foreign interested party comes in via a contact<\/strong>, You can see what I do and how I do it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Web-T: The European Union's solution<\/h3>\n\n\n\n<p>I wrote it this way because it <strong>Developed by the European Union <a href=\"https:\/\/website-translation.language-tools.ec.europa.eu\/index_en\" target=\"_blank\" rel=\"noopener\" title=\"\">Web-T plugin<\/a><\/strong> I use it on the site instead of Polylang.<\/p>\n\n\n\n<p><strong>What's he doing?<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automatically translates the page<\/li>\n\n\n\n<li>Moreover, the <strong>metadata<\/strong> translates<\/li>\n<\/ul>\n\n\n\n<p><strong>What don't you translate?<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>URLs<\/li>\n\n\n\n<li>Prices<\/li>\n\n\n\n<li>Emoji<\/li>\n<\/ul>\n\n\n\n<p>But he's not so bad at it. <strong>Enough to make myself understood by an inquirer<\/strong> \u2013 I am better verbally.<\/p>\n\n\n\n<p>For this reason, and because I had little time, <strong>I used auto translate<\/strong>, Which saved me a lot of time.<\/p>\n\n\n\n<p>There are still small things on the site (a couple of emoji and forint prices, form) that I have to solve, but <strong>The solution is there<\/strong>. For now, it'll be fine.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lessons learned and next steps<\/h2>\n\n\n\n<p>Overall <strong>It was a tough ride<\/strong>, But now I feel like doing it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What did I learn?<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Your own project should be taken seriously.<\/strong> \u2013 if you do it right with your customers, why not do it yourself?<\/li>\n\n\n\n<li><strong>Less plugins = cleaner code<\/strong> No new plug-ins are required for all functions<\/li>\n\n\n\n<li><strong>Utility classes give you flexibility<\/strong> faster development, easier maintenance<\/li>\n\n\n\n<li><strong>Database cleaning is a regular task<\/strong> \u2013 don\u2019t let it grow<\/li>\n\n\n\n<li><strong>Automation (e.g. auto translate) saves time<\/strong> \u2013 use wisely<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">What's next?<\/h3>\n\n\n\n<p>I will probably come up with more details about the project in the future:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Performance measurements (before\/after)<\/li>\n\n\n\n<li>Plugin list in detail<\/li>\n\n\n\n<li>Core Framework Settings<\/li>\n\n\n\n<li>Detailed description of Template Bundle<\/li>\n<\/ul>\n\n\n\n<p><strong>I enjoyed it, even if it was hard sometimes.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Do you have questions about WordPress site optimization? Are you in a similar situation? Write to me!<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Technical summary:<\/h2>\n\n\n\n<p><strong>Results:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 36 \u2192 21 plugins<\/li>\n\n\n\n<li>\u2705 Clearer codebase (107 Utility class)<\/li>\n\n\n\n<li>\u2705 Faster admin interface<\/li>\n\n\n\n<li>\u2705 Easier maintenance<\/li>\n\n\n\n<li>\u2705 Multilingual (Hungarian\/English) with automatic translation<\/li>\n<\/ul>\n\n\n\n<p><strong>Technologies used:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Core Framework (CSS Framework)<\/li>\n\n\n\n<li>BEM naming \u2192 Utility classes<\/li>\n\n\n\n<li>Web-T (multilingualization)<\/li>\n\n\n\n<li>Custom Post Types<\/li>\n\n\n\n<li>Template Bundle approach<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>A clean, optimised website from a 6-year-old WordPress site \u2013 from 36 plugins to 21, from BEM to Utility classes. Redesign case study.<\/p>","protected":false},"author":1,"featured_media":4034,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"facebook_image":"https:\/\/peterteszary.com\/wp-content\/uploads\/2025\/06\/Default-Blog-Cover.webp","twitter_image":"https:\/\/peterteszary.com\/wp-content\/uploads\/2025\/06\/Default-Blog-Cover.webp","title":"Hogyan \u00e9p\u00edtettem \u00fajra a peterteszary.com oldalt 2026-ban - peterteszary.com","description":"6 \u00e9ves WordPress oldalb\u00f3l letisztult, optimaliz\u00e1lt weboldal - 36 pluginr\u0151l 21-re, BEM-t\u0151l Utility oszt\u00e1lyokig. Redesign case study."},"footnotes":""},"categories":[10,526],"tags":[],"class_list":["post-5349","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-update"],"meta_box":[],"_links":{"self":[{"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/posts\/5349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/comments?post=5349"}],"version-history":[{"count":2,"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/posts\/5349\/revisions"}],"predecessor-version":[{"id":5351,"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/posts\/5349\/revisions\/5351"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/media\/4034"}],"wp:attachment":[{"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/media?parent=5349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/categories?post=5349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/peterteszary.com\/en\/wp-json\/wp\/v2\/tags?post=5349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}