SpeedX Marketing · Client Playbook — Landeseiten.de Figma → WordPress · Elementor Pro

Development Guidelines

Hello, dear SpeedX Marketing Developer!

We want to make your work and our collaboration easier and more efficient. We have noticed some aspects that regularly lead to errors.

Let's work together according to these new guidelines to avoid correction/feedback loops and therefore save extra work and stress.

💬 FYI: This is the 1st version, so feel free to give us feedback if you don't understand something or even have suggestions for improvement, we are very open to that! Thank you very much!
10Sections
6Video tutorials
7Checklists
28Screenshots
0

General information#

  • Please always confirm with green check mark or thumbs up in Slack when we send feedback, to make sure you have received it and that you are working on it
  • Please always tag the responsible Landeseiten DE employee with @Name, so that he/she gets a notification — if this does not happen, we waste time or information could get lostPlease check / ask us if something is unclear or if you did not understand words we used — we will then try to rephrase it / explain it
  • Please let us know immediately, if you need more information / material (e.g. vector file of a logo if not provided yet) or if there are technical issues, which you can't handle yourself
  • When you have an issue or question about a specific page in development, make sure to include the link to the page when posting your question on Slack, as it can sometimes be difficult to find the exact page without the link.
  • It's not always best to respond only within a thread on Slack. If there's a more serious issue, it's better to reply directly in the channel, as it makes the message easier to see.
  • Please check the new versions for obvious errors. Content adjustments are our job, but obvious errors are avoidable.
  • If we provide reference pictures: take a look at them and orientate on them
  • Please make sure that all involved employees get our feedback

0.1Development technic#

  • All projects are developed on WordPress, and Elementor Pro is used as the page builder, and the use of the Landeseiten child theme with Hello Elementor Theme is mandatory.Download from here ⇒ https://github.com/felix-werner-landeseiten
  • All pages must be created using Elementor elements (we also have additional elements available through the Essential Addons and Unlimited Elements packages). Creating pages using any other builder or custom code is strictly prohibited unless explicitly specified within the dev instructions.
  • All necessary information for project development is provided through the document Development_Instruction Sheet.Please check / ask us if something is unclear or if you did not understand words we used — we will then try to rephrase it / explain it.
  • After logging into WordPress with the credentials provided in the Development_Instruction Sheet, check and update WordPress and all plugins.
  • If you receive a new project and information, links, access, or data such as images, videos, etc., are missing, you should report it to us immediately so we can locate the necessary materials. Additionally, please point out what is still missing by the time of submission.
  • If your project includes animations, you need to inform the project manager after reviewing the design what type of animation you require (Lottie, MP4, GIF, etc.) as well as the sizes you need (1920 x 1080, 1280 x 800, 768 x 1024, 390 x 844, etc.).
  • For better page load optimization, use as few elements as possible within the DOM. Therefore, we use the flex container system in page development. If you still only have the option for sections, check under Elementor > Settings > Features and Experiments > and enable 'Active Flex Container' under stable section
  • Due to a very well-known bug within Elementor, under no circumstances should you use nested elements (slider, accordion, etc.). Instead, use the elements from the Unlimited or Essential element sets that you have available.
  • The Slack channel for the project is always organized so that all important links and resources are pinned at the top of the channel. In addition, it is strictly forbidden to add anyone (e.g. a web-designer or other developer) to the channel for help. In case you need help, let the Landeseiten project managers know. It's their responsibility then to check the capacities and delegate the tasks.
  • The breaking points for media queries that are checked upon the completion of the page development are: 1280, 1920, and 2560 for desktops and laptops, 1024 for tablets, and 360 for mobile devices. Of course, the developed page must follow the design from Figma at these resolutions.
  • If you finish with a specific update or change on a page, it's also important to link the mentioned page so that we can easily find it and see the changes.
  • If it's necessary to add a plugin while development is being done on the client's live WordPress site, always ask before activating a new plugin, as it could potentially cause issues on the client's website.
  • Similarly, do not deactivate any already installed plugins (such as WP-Rocket, Elementor, Gravity Forms, etc.) without prior approval.
🔑 Access credentials for the dev account on Figma
PassFwH0L4g@$Uz0&JLI
1

Starting points#

1.1Screen breaking points#

Please make sure that you frame a webpage to certain resolution break points according to our instructions. Here is an overview for you:

Desktop resolution breaking points: screen resolution 1280px to 1440px, 1440px to 1920px, and 1920px and over
Desktop resolution breaking points — 1280px to 1440px, 1440px to 1920px, 1920px and over

Within WordPress, the starting point for website development begins with the desktop resolution, which then passes CSS rules to other breakpoints.

The default values for media queries in Elementor are:

  • Desktop: 1920px and over
  • Tablet: 1024px and below
  • Mobile: 576px and below
📐
It's important to note that for all desktop query resolutions, if we have a resolution that is equal to or below the inner container of the website (1440px, 1280px), the left and right padding should be at least 80px, unless otherwise specified in the design.
Mobile resolution breaking points: under 1024px landscape / under 959px portrait for tablets, under 768px landscape / under 480px portrait for phones
Mobile resolution breaking points — tablet: under 1024px (landscape) and under 959px (portrait); phone: under 768px (landscape) and under 480px (portrait)

As can be seen in the image above, where we have an explanation of the breakpoints for mobile devices, for more precise control over responsive websites, our recommendation is to create additional media queries within Elementor to ensure the project displays correctly on all devices, you can see how to do this in the video below:

Additional media queries in ElementorOpen on Loom ↗

1.2CSS styling#

⚠️
NOTE: It is important from now on to add all CSS code to the main style.css located in the Landeseiten child theme folder. The stylesheet can be accessed through Appearance → Theme file editor → Stylesheet (style.css). The whole process is shown in the following video.
Adding CSS to the child theme style.cssOpen on Loom ↗

1.3Global Color#

Before starting work on the pages themselves, it is necessary to set up global variables for colors to make future changes easier. This can be done very easily by following these steps:

Elementor editor with the additional hamburger menu highlighted
1When you enter to edit the page with Elementor, click on the additional menu as shown in the picture.
Elementor menu with Site Settings option highlighted
2After that, click on Site Settings.
Elementor Site Settings with Global Colors option highlighted
3After that, click on Global Colors.
Elementor Global Colors editing panel
4After that, we get the menu for editing global colors. Here, it is possible to change the variable name by double-clicking on it. By clicking on the color, we get a menu where we can enter the desired color value.

1.4Fonts (Custom Fonts & Google Fonts)#

When using Google Fonts through Elementor please enable the Load Google Fonts Locally option in the Elementor performance section (according to image). This will download the fonts automatically which helps speed and also makes the fonts GDPR safe.

Elementor performance settings with Load Google Fonts Locally enabled
Elementor → Settings → Performance: enable “Load Google Fonts Locally”
⚠️
Please make sure to let project managers know before you use custom fonts. This must be strictly followed, since using custom fonts may have license restrictions or other limitations that we have to take note of. The fonts may have to be changed as well as it is in contrast to our design guidelines. So please make sure to note this before use.

To be ready to create global variables for the texts used on the site, we first need to upload and create a local font within Elementor. This can be done by following these steps:

WordPress sidebar showing Elementor menu with Custom Fonts option
1In the backend, move the mouse to the Elementor section on the right side. An additional menu will open with the option "Custom Fonts," which you click on.
Custom Fonts page with the New Font button highlighted
2After opening the Custom Fonts page, on the top line, we have the option "New Font," which we click on.
Add New Font screen with font name field and WOFF2 file variation upload
3After clicking on "Add New," a new window appears where we first enter the font name. Then, we add variations. The only file required for loading the font is a WOFF2 file. The WOFF2 file type is optimized for web display, has the highest compression, and is therefore the fastest to load. It is supported by all major browsers. Under no circumstances should you use the TTF file type, as it is not optimized for the web and can cause slow site loading issues. You can find and download the necessary files in WOFF2 format on the website: https://gwfh.mranftl.com/fonts

1.4.1Breaking headings at a specific point#

When we need a heading to break at a specific point, we've been using different approaches: <br>, hiding <br> on mobile, fixed max-width in px, etc. These all cause issues:

  • breaks at weird places on smaller screens
  • Hiding <br> on mobile means extra markup + media queries
  • Fixed px widths don't scale with font size
  • Better approach: Use max-width in ch units.
CSS
h2 {
  max-width: 28ch; /* breaks naturally after ~28 characters */
}

Keep in mind this doesn't mean 28 characters — it's just 28 "0" characters width, but you just quickly try what value is a good match for you so the heading breaks where you want.

Why this works:

  • ch is relative to the font, so it scales properly
  • If there's less space (mobile), text just reflows naturally — no weird breaks
  • No extra <br> elements or media queries needed
  • One line of CSS replaces the whole workaround
2

Homepage development#

The page builder exclusively used for developing home pages is Elementor. If Elementor Pro is not activated, please contact the person responsible for the project within the Slack channel.

All the important information you need for page development can be found in the development instruction sheet.

Development instruction sheet — first part with deadline, links and project data
Development instruction sheet — second part with legal texts, form and script information
  1. Deadline for completing the development.
  2. Link to the site being developed
  3. Link to Figma containing the project design
  4. Google Drive with images and icons
  5. Additional ideas and input for development
  6. Additional subpages for the project
  7. Whether the site needs to include a cookie banner
  8. Text for the Impressum page
  9. Text for the Datenschutz page
  10. Text for the AGB page
  11. Link to the Vimeo video used in the project
  12. Information for developing the contact form
  13. Link to the thank you page
  14. Text for the thank you page
  15. Code scripts for Pixel meta tags, Google Tag Manager, …

2.1Important development steps#

  • Install WORDFENCE plugin
  • When developing pages, use as few elements as possible within the DOM to ensure the page loads as quickly as possible — DO NOT USE TOO MANY CONTAINERS.This is important since it affects both backend and frontend page loading speed.
  • Take into consideration the accessibility for the website.
  • If a design segment in the project needs to be changed, inform the project manager. Do not add the designer you previously collaborated with on another project to the Slack channel.
  • If the project is live, make sure to first make and test changes on the demo project.

2.1.1Plugin conflict — additional plugins#

  • Use ELEMENTOR PRO ONLY to build your webpage. Use Essential Addons or Unlimited Elements when necessary only.
  • Do not add any plugin that is not in the standard list of plugins. If an extra plugin is required in specific cases, first ask for permission.
  • Do not mix Essential Addons and Unlimited Elements to build elements. Use elements from one of these plugins in your project only when you have to.

2.1.2Page accessibility#

The following points should be taken into account at the beginning of your web development project.

🧱 Semantic HTML — Use proper headings (H1 to H6), lists, and landmark elements.

Using proper headings (H1 to H6), paragraph, lists and landmark elements ensures that your website content is structured logically for all users. It helps screen readers interpret the page correctly and improves SEO.

🖼️ Alt text for images — Ensure all images have descriptive alt attributes.

Providing descriptive alt attributes allows visually impaired users to understand the content and purpose of images. It also helps search engines index your images more effectively. This means give an alt text to all images.

🎨 Color contrast — Ensure text contrast meets WCAG 2.1 standards (check with Elementor's color settings or tools like Contrast Checker).

Ensuring text meets WCAG 2.1 contrast standards makes your content readable for users with visual impairments, including color blindness. Tools like Elementor's color settings or Contrast Checker can help you verify accessibility. This means use enough contrast as possible.

⌨️ Keyboard navigation — Make sure interactive elements are focusable and navigable via keyboard.

Making interactive elements focusable and navigable via keyboard ensures users who cannot use a mouse can still fully interact with your site. This is essential for accessibility compliance and usability. This means when you have a link or button or field use the following: <a href="#">, <button>, <input>, <textarea> or <select>.

DO NOT use div or span for buttons or links or other interactive elements.

🏷️ ARIA roles — Use Elementor's advanced settings to add ARIA labels when needed.

Adding ARIA labels clarifies the purpose of elements for assistive technologies, enhancing navigation and understanding. Elementor's advanced settings allow you to implement these labels where standard HTML is insufficient. For example, buttons with no text (buttons that are only images or slider buttons) should have an ARIA label.

2.1.3Add logo and favicon#

In the next section, you can see how to add the site logo and favicon.

WordPress dashboard — Appearance menu with Customize option
1Within the WordPress dashboard, hover over Appearance with your mouse, then click on Customize.
WordPress Customizer with Site Identity option
2In the newly opened window, click on the Site Identity option.
Site Identity panel with Select logo and Select site icon options
3First, we will add the Site Logo. Click on Select logo, which will open the Media Library. Here you can either select an existing logo or upload a new one if it is not already in the library. Next, click on Select Site Icon, and from the Media Library, select or upload the favicon.
Site Identity panel showing the uploaded logo and site icon
4After successfully completing the process, you should see the Logo and Icon displayed for the site.

2.1.4Discourage search engines while developing#

Ensure that all pages in development are excluded from Google indexing while they are in the development process.

WordPress Reading settings with the option Discourage search engines from indexing this site checked
In the settings, choose "Reading". When the settings for this page open, check the option "Discourage search engines from indexing this site" to activate it.

2.1.5Adding Vimeo videos#

The Vimeo video added to the page must have sound enabled. It should be placed inline within the page to adjust the cookie banner settings.

Elementor Video element options with Mute disabled and intro options turned off
Within the options of the Video element in Elementor, make sure the "Mute" option is disabled. Also, make sure the video is not set to autoplay, because that option automatically mutes the video in the browser. Likewise, it's mandatory that Intro Title, Intro Portrait, and Intro Byline are always turned off.

The default cookie banner we use in our projects is Borlabs. If this plugin is not installed or activated within the project, please contact the project manager who will install and activate it. After that, the initial setup of the Borlabs Cookie banner needs to be done. You can see how to do this in the video below:

Important! The general back-end settings have to be changed to German language BEFORE the Borlabs setup. It's not possible to change the Borlabs language afterwards.
Borlabs Cookie banner — initial setupOpen on Loom ↗

Almost all our projects contain video materials downloaded from Vimeo. For this reason, it is necessary to block the content of these videos until the visitor allows it through the Borlabs Cookie banner. Similarly, all types of external content can be blocked in the same way. You can see how to block external content in the following video:

Blocking external content with BorlabsOpen on Loom ↗

2.1.6.1Installing tracking tags (Google Tag, Pixel…)#

Always use the Borlabs Cookie plugin to set the tracking tags. You can do this similar to the video shown for the Vimeo blocker by adding a new blocker for your tag.

🚨
Warning: The tracking code is already entered in Borlabs during the Service setup. Adding it again elsewhere causes duplicate tracking and potential GDPR issues (code firing before consent). Please double-check other projects for this.

2.1.7Additional JavaScript#

Additional JavaScripts must be done using the Custom Code option in Elementor.

WordPress sidebar — Elementor menu with Custom Code option
1In the menu on the right side, when you hover over "Elementor," an additional menu opens. Click on the "Custom Code" option in that menu.
Custom Code page with Add New button
2When the Custom Code page opens, clicking on the "Add New" button allows us to enter the additional code that we need.
Custom Code editor with a title field and code area
3We add a title for the additional code, for example "Pixel", and in the lower field, we enter the necessary code.
Custom Code publish options with conditions
4If the code needs to appear on all pages, click "Publish." If it should only appear on specific pages, click "Edit" under the Conditions options.
Custom Code conditions dialog with Save and Close button
5Here we have the options to specify the conditions under which the additional code is added to the site. When we're done setting the conditions, click on "Save & Close," and then click on the "Publish" button.

2.1.8Do Not Repeat Same Scripts On Page#

When you use the same script multiple times on a page, you only need to include it once. After that, you can reference it as needed. For example, if you add the script below to the page using the HTML Elementor widget, you don't need to repeat it for each video. This is especially useful for videos from websites like Vimeo, YouTube, or Wistia, as well as when adding scripts for multiple Lottie files.

Example: Global loader (ONE HTML widget)

HTML — global loader (one HTML widget)
<script src="https://www.youtube.com/iframe_api"></script>
<script>
function onYouTubeIframeAPIReady() {
  document.querySelectorAll("[data-yt]").forEach(el => {
    new YT.Player(el, {
      videoId: el.getAttribute("data-yt")
    });
  });
}
</script>

You can place other videos by just referencing the ID:

HTML — video placeholders
<div id="yt1" data-yt="VIDEO_ID_A"></div>

<!-- Somewhere else: -->
<div id="yt2" data-yt="VIDEO_ID_B"></div>

<!-- Somewhere else: -->
<div id="yt3" data-yt="VIDEO_ID_C"></div>
3

Main page checklist#

0 / 14 checked
4

Subpage checklist#

0 / 3 checked
5

Contact form checklist#

5.1How to build a contact form#

In the development instruction sheet (see at point 2 in this document), we can see that point 12 is a table with questions for the contact form. When developing the contact form, we always use Gravity Forms for creating forms, configuring them as specified in the development instruction sheet. Additionally, each form must be configured in steps, meaning that each question is displayed as a separate step.

0 / 4 checked

In this video, you can see how to create a contact form using Gravity Forms, how to build a multi-page form (one question at a time), and how to set up conditional logic.

Video tutorial for creating Gravity FormsOpen on Loom ↗

5.2Landeseiten Form Plugin#

In the next step, we use the Landeseiten Forms Plugin to style our form and customize the default texts (error message, button text, etc.). This plugin takes care of everything, and it must be active, so the form functions are set up as are required by Landeseiten. For example, the plugin creates a step-by-step system for the forms, makes the buttons work with Enter and also auto-focuses onto the fields. You can see how to use the plugin in the video below.

Basics of Gravity Forms + form styling using our Landeseiten form pluginOpen on Loom ↗
6

Termin page checklist#

🔗 Example: gesundwerk-nuernberg.de/termin/

0 / 2 checked

In the example, a booking service is Calendly.

Calendly booking form with name and email automatically pre-filled via URL query string
Calendly — form data (name, last name, email) pre-filled via URL query string
7

Danke page checklist#

🔗 Example: nvkompetenz.de/danke/

0 / 3 checked
Danke page example with Zurück zur Hauptseite button
Danke page — "Zurück zur Hauptseite" CTA linking back to the main page
8

404 page checklist#

0 / 6 checked
9

Impressum page checklist#

🔗 Example: nvkompetenz.de/danke/

0 / 1 checked
📝
Diese Website wurde getextet, designt und entwickelt von der Website-Agentur Landeseiten.de.

which means: "This website was written, designed, and developed by the web agency Landeseiten.de". Make sure that Landeseiten.de is linked correctly here.