What are you looking for?

Docs

Voxer Documentation

Voxer is a lightweight WordPress theme for magazine and news sites, built around speed and Core Web Vitals. This guide covers installation, the homepage builder, every setting and the developer filters.

Contents

Requirements

  • WordPress 6.0 or newer (tested up to 7.1)
  • PHP 7.4 or newer
  • A page cache plugin is recommended for the best speed

Installation

  1. In your WordPress admin go to Appearance > Themes > Add New > Upload Theme.
  2. Choose the theme zip file, install it and click Activate.
  3. Go to Appearance > Menus and assign menus to the Main Menu and Footer Menu locations.
  4. Open Appearance > Customize to set colors, the default theme mode, the header button, the footer, the newsletter and your social links.

You do not need to set a static front page under Settings > Reading. The theme builds the homepage itself.

On first activation, the Homepage Modules area (Appearance > Widgets) is filled with a starter layout of 7 modules that you can edit, reorder or delete. If the area is empty, a hero section shows your latest posts.

Tip: Posts without a featured image use a dark placeholder so the design does not break. For the best look, add a featured image to every post.

Existing sites: Voxer adds a new image size (voxer-hero-m, 768×525). Run a thumbnail regeneration plugin once so older images get this size too.

Widget areas

  • Homepage Modules: builds the homepage from top to bottom with Voxer modules.
  • Footer – Discover: the “Discover” column of the footer.
  • Footer – Recent Posts: the second footer column. If empty, the latest 3 posts are shown automatically.
  • Footer – About: the logo and description column. Widgets are shown below the description.
  • Post Sidebar: shown on single posts. If empty, “Popular Posts” is shown automatically.
  • Page Sidebar: shown on static pages. If empty, “Popular Posts” is shown automatically.
  • Header Banner – Above Header: a full-width banner above the top bar.
  • Header Banner – Top Bar (728×90): centered in the top bar. It is desktop only and moves to its own row below 1180 px.

Homepage modules

Open Appearance > Widgets, find Homepage Modules and drag in the modules below. Every module can be added more than once, and each one has its own post selection.

  • Voxer: Main Headline: 1 large post and 2 side posts. Turn on “Split the bottom-right card in two” to show 4 posts.
  • Voxer: Scrolling Posts: a horizontal strip of posts scrolled with arrow buttons.
  • Voxer: Category and Tag Strip: a filter strip of categories and tags. It becomes a carousel when there are many items.
  • Voxer: News Ticker: a thin strip that scrolls headlines and announcements. It pauses on hover or keyboard focus. If you do not add it, it is not shown.
  • Voxer: Headlines Board: 3 small items on the left, 1 large featured story and a row of 3 cards on the right (7 posts in total).
  • Voxer: Discover Strip: the “Browse by mood” strip. Each of the 6 circles can show a category, a tag or a post, with a color or a custom image.
  • Voxer: Showcase and Sidebar: an optional large post and a card grid on the left, and a sticky sidebar on the right with up to 15 items (Small Post, Card or Banner).
  • Voxer: Editor’s Picks: one large post and up to 2 compact cards.
  • Voxer: Post Feed and Sidebar: a list of posts with a sticky sidebar. If the sidebar is empty, the 5 most read posts are shown.
  • Voxer: Popular Posts: a short list with small images.
  • Voxer: Banner and Ad Space: one banner image or an ad code (AdSense).
  • Voxer: Newsletter Signup Strip: an email signup strip with editable texts and background color.
  • Voxer: Company Pages: a list of selected pages (About, Contact, Imprint, Privacy and so on).

Choosing posts

Posts in the Main Headline, Headlines Board and similar modules can be pinned by entering post IDs or links, filled automatically by category and tag, or left empty to show the latest posts. Manually entered posts always come first.

A post shown in one module is not suggested again in the following modules on the same page. You can change this under Customizer > Voxer Theme Options. Posts you pick by hand are not affected.

Auto-fill order

Modules managed by ID or link, category and tag have an Auto-fill order option:

  • Latest posts (default)
  • Random posts: picks from the newest 100 matching posts. Change the pool size with the voxer_random_pool_size filter.

Random selection is made on the server while the page is built, so layout shift is not affected. If you use a page cache, the list stays fixed until the cache is refreshed.

Banners and ad code

Every banner has a Show on setting: desktop and mobile, desktop only or mobile only. Tablets and phones (1023 px and below) count as mobile. Banners reserve their height up front so ads do not push content around.

The banner link must be a full address, for example https://example.com/page. If the link is empty, the banner is shown but cannot be clicked. The Top Bar area is desktop only by design.

Main menu

The main menu appears in the header on desktop and in the side drawer on mobile. Submenus open with an arrow button in the drawer.

Mega menu

When a top-level menu item is a Category and has child items, Voxer shows a mega panel with the latest posts of that category. The child items (up to 8) are listed as links. Panels are cached and refreshed when posts are published or deleted.

Footer menu

Assign a menu to the Footer Menu location. Pages for the footer columns and the legal bottom bar are chosen in Customizer > Voxer Footer.

Side drawer

The hamburger buttons open a drawer with the main menu, the latest 5 posts and your social icons. The latest posts are loaded when the drawer is first opened and cached for 15 minutes, so their images do not affect page speed.

Customizer settings

Open Appearance > Customize. Voxer adds the following sections.

Voxer Theme Options

  • Accent color and hover color
  • Default theme: Light, Dark or System
  • Prevent the same post from repeating across modules
  • Show excerpt in the “World News” feed
  • Social media URLs: Facebook, X, YouTube, Pinterest, Instagram, LinkedIn and Other (three-dot icon). The ones you fill appear in the header, the side drawer and the footer, in the same order.
  • Newsletter form target URL (Mailchimp, etc.)
  • A short note about supporting the project

Voxer Header

  • Header bar color, header text and icon color, header hover color
  • Menu size: Normal, Compact or Tight. Smaller sizes reduce the menu text and spacing so more items fit in the header.
  • Subscribe button: text, link and whether it opens in a new tab. If the link is empty, the newsletter window opens.

Voxer Newsletter Modal

Title and description of the newsletter window, separate “open automatically on scroll” options for the homepage and post pages (percentage of the page scrolled), and how many days it stays closed after being dismissed. Visitors who subscribe or close the window are not shown it again.

Automatic pop-ups that cover the content on mobile can run into Google’s intrusive interstitial rules, so keep the scroll percentage high if you use them.

Voxer Post Page

Show or hide the author, date, reading time, comment count, share buttons and text size buttons. You can also upload an author image (used for every author). The author name links to that author’s post archive.

Voxer Contact Page

The details shown in the Contact page template and the email address the form is sent to. If left empty, the site admin email is used.

Voxer Footer

Footer logo (optional), description under the logo, newsletter box title, Privacy Policy and Terms of Use pages, a title and pages shown below the categories, bottom bar (legal) pages and the copyright line. The {year} and {site} shortcuts are available in the copyright line.

Recent Posts Page

Tick Enable the Recent Posts page to get a page at /recent-posts/ that lists all posts in the same design as the category page. You do not need to create a page in the admin.

  • There are separate options to show it in the header menu and in the side drawer menu. When on, it is added right after the home item (first, if the menu has no home item).
  • If you added an item pointing to this address by hand, no automatic item is added.
  • When the option is off, the address returns a 404.
  • The slug can be changed with the voxer_recent_slug filter.

Dark theme

  • Visitors switch themes with the moon and sun button next to the search button. The choice is stored in the browser. Without a stored choice, the “Default theme” setting is used.
  • One logo is used everywhere (Appearance > Customize > Site Identity). It sits on the header color: in the header itself and on a strip in the same color at the top of the side menu and the newsletter window. If you change the header color, those strips change with it, so design your logo for your header color (black by default).
  • The footer can have its own logo (Voxer Footer > Footer logo). If empty, the site logo is used.
  • The theme is set before the first paint and only colors change, so layout shift is not affected.

Newsletter

The newsletter form works out of the box.

  • Without a target URL: submitted email addresses are stored inside WordPress. A Newsletter Subscribers screen appears in the admin menu where you can view, search and delete subscribers. Only administrators can see it, because email addresses are personal data.
  • With a target URL (Mailchimp, etc.): the form posts directly to it.

Protection includes email format validation, duplicate prevention, a hidden honeypot field and a per-IP hourly limit (10 by default, change it with the voxer_newsletter_hourly_limit filter). The form carries no nonce on purpose, so it keeps working on cached pages.

Before switching themes: subscribers are stored by the theme. If you switch to another theme the data stays in the database, but the Subscribers screen disappears. Export or copy your subscribers first.

Contact page

  1. Create a new page.
  2. Choose the Contact page template.
  3. Fill in the details under Customizer > Voxer Contact Page.

The form is sent by AJAX with a honeypot field and a per-IP rate limit (one message every 30 seconds). It carries no nonce on purpose, so it keeps working on cached pages. Change the recipient with the voxer_contact_recipient filter.

Performance

Voxer is built to score well on PageSpeed Insights and Core Web Vitals.

  • Fonts (DM Sans, Poppins) are served locally with font-display: swap. There are no Google Fonts requests, and the critical fonts are preloaded.
  • One small main.js is loaded with defer. No jQuery or other runtime library is needed.
  • Emoji scripts and styles, unused head links and jQuery Migrate on the front end are disabled.
  • The hero image is the LCP candidate, so it is marked eager with high fetch priority and preloaded in the head. If the hero module uses the Random order and has no manually selected post, the image cannot be known in advance and no preload is added. For the best mobile speed use the Latest posts order or select posts by hand.
  • Other images use WordPress’s default lazy loading with automatic width and height attributes. Uploaded JPEG and PNG images are converted to WebP.
  • The “Most read” lists sort by comment count instead of using a view counter that writes to the database on every page view.
  • The theme stylesheet is printed inline in the page head, so it does not block rendering with a separate request. To load it as a normal file instead, add add_filter( 'voxer_inline_css', '__return_false' ); to a child theme or a snippets plugin.
  • Page speed also depends on hosting, page caching and image sizes. Test on your final hosting, because free hosts often report slower results than a real server.

Editing CSS or JavaScript

style.min.css and assets/js/main.min.js are minified copies of style.css and main.js and are loaded when present. If you edit the readable file, delete the matching .min file (the theme falls back to the readable file) or minify it again. Setting define( 'SCRIPT_DEBUG', true ); in wp-config.php always loads the readable files.

Developer reference

Filters

  • voxer_inline_css (default true): return false to load the stylesheet as a file instead of inline.
  • voxer_random_pool_size (default 100): number of newest posts the “Random” order picks from.
  • voxer_newsletter_hourly_limit (default 10): sign-ups allowed per IP per hour.
  • voxer_contact_recipient: email address that receives contact messages.
  • voxer_recent_slug (default recent-posts): URL slug of the Recent Posts page.
  • voxer_content_width (default 940): content width used by WordPress for embeds.

Image sizes

  • voxer-hero: 1200 x 820, hero and large story images
  • voxer-hero-m: 768 x 525, smaller hero images for mobile
  • voxer-card: 640 x 440, cards and sliders
  • voxer-compact: 480 x 480, small list thumbnails

Translation

All strings use the voxer text domain. The source language is English, and a Turkish translation (tr_TR) is included in the languages/ folder. To add another language, translate languages/voxer.pot with a tool such as Poedit and save the .po and .mo files in the same folder.

Troubleshooting

The homepage shows only my latest posts.
The Homepage Modules area is empty. Add modules under Appearance > Widgets.

The Recent Posts page shows a 404.
Enable it under Customizer > Recent Posts Page, then save your permalinks once (Settings > Permalinks > Save Changes).

The mega menu does not appear.
The top-level item must be a Category and have child items or posts.

A banner does not show.
Make sure an image is selected (or an ad code is entered) and click Save in the widget. Use a full address such as https://example.com in the link field. The Top Bar area is desktop only.

My changes to style.css do not show.
Delete style.min.css (or minify it again) and clear your page cache. The theme loads the minified copy when it exists.

The newsletter or contact form stopped working on a cached page.
Both forms are built to work with page caching. Check that your cache plugin does not block admin-ajax.php requests.

Older images look blurry in the hero.
Regenerate thumbnails once so the new voxer-hero-m size exists for old uploads.

I cannot upload or crop my logo.
If the image preview is broken, check that your wp-content/uploads folder does not block image files, and that WordPress Address and Site Address in Settings > General both start with https://.

Credits and license

  • The theme is licensed under the GNU GPL v2 or later (see LICENSE).
  • The fonts (DM Sans, Poppins) are licensed under the SIL Open Font License 1.1. The text is in assets/fonts/OFL.txt.
  • Copyright: themestick.com

If Voxer helps your site, please consider a small donation at themestick.com/donate. Every contribution keeps the updates coming.