 Yeah, we have this rather technical Fun-breaker title using WordPress for leading local newspaper websites Well, that's pretty much everything that you need to know about this session So thank you Okay, now we I have some more slides There will be a tweet coming in a few minutes with a link to the slide share so You don't need to take notes on everything what's on the slides Somewhere some me my name is Christoph especially those who are interested in football or coming from Germany will also See a familiar surname. There will be no hair hair probes or something He was just look it up if you're interested. I'm a senior developer. I'm Considering myself a worker specialist since 2013 that was the time when I was starting as a fool as an in-house developer and co-founder of the Dortmund meter I will wait a little moment until Everyone is fighting in It seems like the end not just over there was a little bit too long So everybody's seating Yeah, yeah, especially the the colleagues are the last year so and I'm a proud father to a son and Yeah, the company I've been oh The company I've been working or the companies I've been working for our three local newspaper companies The oldest one is has a history of over 190 years Where Selling a total of 11 newspaper titles So there will be 11 newspaper websites The area is round Dortmund And the most known of the newspaper is Ruhrnachrichten, which is the biggest newspaper in Dortmund and the total distribution area there are about one and a half one to one point six million people living and The company has about four thousand employees in total and 200,000 pieces circulation That's to the heart fix on the company So our status quo and our star our goals This was a status quo. We had a Proper territory software by a small system house, but which was only maintained by them They had slow development speeds. We were depending on a quite small partner the website was big it had high load times and especially not just the website, but The RSS feed which was used for the app. It took about 30 seconds to load So it was ridiculous SEO was bad. The costs were high and Yeah, the other thing we had and still have paid and free content and and Our plans or goals were a transition to WordPress this was Yeah, something like a heart project about from our CDO There is actually a talk from me and Sebastian from I think 2018 which is also to be found on WordPress dot TV when we Merged two existing WordPress sites into one. This was on the work work camp Osnabrück It's in German. So But it there are some good insights Another thing that we our goal were completely get rid of all legacy dependencies We have that we have some self-maintain code and a faster development And also deployment that it's scalable that we use a standardized approach a seamless Transition this would will be one of the main focuses for this talk so that In first-hand the appearance did look the same that Customers especially the paying customers did not get an email. Hey you have we relaunched and you need to reset your password and That the editors had No interruption and Obviously that Google did not say okay. This is a new site. It has has no history We will check at the end how many of these goals were achieved and To throw in some numbers Our biggest website had 8.9 million page impressions in August and All the 11 sites combined had 16.7 million page impressions in August so our roadmap Someone early first quarter of 2020 we had to kick off So we decided we wanted to go live with single site WordPress Yeah, this was our planned prototype finish As you see it's not tilted Because we initially thought we would finish someone early second quarter late second quarter early third quarter mid third quarter late late fourth quarter Well So we went live with the first website end of February feb you airy twenty twenty one And Yeah About a month later one and a half month later with the second site This next one is actually six websites that were launched in May and Then two pretty much at the same time in mid of June Well, and the last one and the biggest one There's a huge jump because all the ones at the front They were able to run on the single machine Especially those MHP ones. They were very small. They were fresh. They were starting off fresh There were six sites on a single machine, but this one I think We had to use a total of six service young six service So there was a lot of trouble. We had a lot of fails and So on so it took a total of five months or nearly five months between the launch of mlz until we could go to the last big one and And what's not now on the on the road map in June and July 2022 all the existing Websites that were initially initially launched on Third-party maintained hosting were moved to an own setup and Early 22 there was a kickoff for Visual relaunch, which is planned for lunch In the fourth quarter. So our biggest challenge is for us the import of all the old stuff to Give possibilities to create and control the category pages and the whole page At best without coding. So I am a coder. I don't want to do maintenance work like Can you please move this headline a bit or this or that I don't want to do this What I mentioned lock-ins redirection of all the legacy URLs We had still a dependency on the legacy ID for tracking and push notifications, etc Yeah So let's jump directly into the first solution The old URL schema was like Some legacy category name the post Name and legacy ID dot html the new URL schema was like below and I used the WordPress hook template redirect for some magic because what I'm doing is If a website deliver would deliver or a URL would deliver a four or four Before the actual four or four template is loaded template redirect is fired and in this case, I see the the actual broken URL and Well the URL has three unique pieces the post name legacy ID and the WordPress ID so I take a regular expression or multiple regular expressions and I check for these pieces of the ID So I first check for the WordPress ID and for the legacy ID in the post name in a case I find something that Exists in my system. I will just redirect to the post I find so If I go to the legacy URL There is a legacy ID and if I see the legacy ID, I find the actual post so I have a redirect with a single hop from the old idea URL to the new URL and Sort of by accident. I have a URL shortener and a self-repair system for URLs because If by example someone posted a link and placed a space somewhere As long as either post name or legacy ID or WordPress ID is still intact The system will still find the correct location and do a redirect which is quite handy because You can just type the portal name Slash WordPress ID and you have a view of a short URL or the legacy ID Which is the same among all the other portals Is the thing that can come handy for the Social media teams As for login, I'm using another hook Which is the authenticate hook WordPress itself Has multiple things hooked into the authenticate hook itself so I'm hooking into the same hook at a later at a later place and If the user the account is either unknown to WordPress or Marked with some user meta as a remote account I will call the rest API from the old partner To check if the credentials are correct if the credentials are correct a local copy will be created and Data will be loaded like first name last name Etc. And we also have the option for Existing customers to maintain their data like address for shipping of the actual newspaper These are loaded by demand if the form is loaded one of the bigger things was Homepatient category pages when we started the project the The query block was not even mentioned so yes, so we Had to figure out a way of on and as I mentioned I didn't want to Do maintenance work so we Wanted to empower our editors To Have all of these work for their own and all the power for their own So we created Block we called the post list block Which is pretty much? Comparable to the new query block. It has some additional tweaks Because it allows filtering back categories if it allows filtering back tags it can have multiple categories you can Have a read more option which loads more Into this wire Ajax Or simply an external link like you can have on the home page a Link to the category Borset lot and Obviously this is not where read more should be loaded But read more just directs and you can have a second one on the same side for Shalke no fear same idea load read more on the on the existing side And another thing which was very important The editors Don't just throw in things in a chronological order they have Certain articles that are important over a long time. So they want Some kind of this stick this But not just stick there, but maybe stick a little bit lower or stick here or stick there so We created controllable positions at first locally within our WordPress instances in a second step with With a react app that was pushing the information into all the WordPress instances so that the editors need could have the possibilities to say at this position until Three o'clock. There is this post after that. There is another one that for all 11 portals all possible sites and all possible positions so they had the Complete power of the sites and Besides feature requests, we never had to do any maintenance work Another very very important key part was the importer initially We had the imagination that we run this importer once and afterwards We would be so fast But we also Have the editors work in WordPress. Well Isabelle, I think this is completely off the table for now, right? At least for the foreseeable future. So