WordPressViteBlog

180c-theme — WordPress Blog Template

By nearmint

The WordPress theme used by the official 180°C French food magazine site, covering editorial content, a recipe library, a WooCommerce shop and subscriptions, and providing a REST API for its mobile apps.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Classic PHP templates combined with an ACF Flexible Content page builder for editor-driven layouts on the homepage and landing pages

02

Custom REST namespace 180c/v1 providing authentication, favorites, recipes, push and newsletter endpoints for native apps via JWT

03

Built-in SEO output: meta tags, JSON-LD (Article, Recipe, Product, FAQPage, VideoObject), sitemaps and llms.txt, with no SEO plugin required

04

Self-built consent banner; GA4 and Umami load only after user consent

05

OneSignal push notifications across mobile and web, with automatic sending when a recipe is published

06

Code-level rate limiting, security response headers and TOTP two-factor authentication

Template Details

180c-theme is the custom WordPress theme for 180°C, an independent French food magazine, running on 180c.fr. It carries editorial content, a recipe library, a WooCommerce shop and paid subscriptions, and provides a REST API for 180°C's iOS and Android apps.

The theme uses classic PHP templates together with an ACF Flexible Content page builder to assemble the homepage and landing pages, making it easier for editors to organize layouts. The front end is compiled by Vite, styles are based on Tailwind CSS, and scripts use native ES modules organized with BEM. The content model is managed through ACF Pro, with field groups stored as Local JSON in the acf-json/ directory.

Functionally, the theme includes a custom REST namespace, 180c/v1, aimed at the apps, covering authentication, favorites, recipes, push and newsletters; for SEO it directly outputs meta tags, JSON-LD (Article, Recipe, Product, FAQPage, VideoObject), sitemaps and llms.txt without relying on an SEO plugin. For privacy, it uses a self-built consent banner, and GA4 and Umami load only after user consent; push notifications are handled through OneSignal across mobile and web, and can be sent automatically when a recipe is published. The code also includes rate limiting, security response headers and TOTP two-factor authentication for administrator accounts.

In terms of usage constraints, the theme depends on plugins such as WordPress, WooCommerce, WooCommerce Subscriptions, WooCommerce Memberships and ACF Pro, and requires PHP 8.3+, Composer and a Node environment. The mu-plugins in the repository must be installed manually and are not uploaded by the deployment process. Licensing of third-party assets such as demo images, fonts and icons must be checked separately and cannot be judged solely from the code's MIT license.

WordPressViteBlog

Is it right for your project?

Use Cases

  • Building a WordPress site for a food or lifestyle publication that combines editorial content, a recipe library and an online shop
  • Providing a WordPress backend with authentication, favorites, recipes and other endpoints for existing iOS and Android apps
  • Content sites that want to output structured data, sitemaps and llms.txt directly without installing an SEO plugin
  • E-commerce scenarios that need subscription memberships or paid content and integrate WooCommerce Subscriptions and Memberships
  • Sites with privacy compliance requirements that need to load analytics scripts only after user consent

Suitable For

  • Developers familiar with WordPress theme development, PHP and Composer
  • Teams building content and e-commerce sites with the ACF Pro and WooCommerce ecosystems
  • Media or publishing organizations that need to provide a REST API for mobile apps
  • Projects that accept a front-end workflow using Vite, Tailwind CSS and native ES modules

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requirements: PHP 8.3+, Composer, Node 24+, and a local WordPress with the above plugins installed

  2. 2

    Clone the theme into wp-content/themes, then run composer install, npm install and npm run build in order, and activate the 180°C theme in the admin

  3. 3

    ACF field groups are synced from the acf-json/ directory

  4. 4

    Must-use plugins in the mu-plugins directory must be installed manually and are not uploaded by the deployment process

  5. 5

    Third-party assets such as demo images, fonts and icons must be checked separately under their respective licenses

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version in the public repository under the MIT license; the free scope applies to that version's code and does not mean external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize and distribute this version's code for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Before use, you must prepare a local WordPress environment and install plugins such as WooCommerce, WooCommerce Subscriptions, WooCommerce Memberships and ACF Pro; these plugins must be obtained separately.
  • Must-use plugins in the mu-plugins directory must be installed manually and are not uploaded by the deployment process, so you must handle them yourself.
  • Shop payments, email subscriptions, push notifications and JWT login depend on external services such as Stripe, PayPal, Mailchimp, OneSignal and Simple JWT Login; you must register accounts and configure keys yourself.
  • GA4 and Umami analytics scripts load only after user consent, and you must configure the corresponding analytics service accounts yourself.
  • The deployment process uploads to production via SFTP through GitHub Actions, and you must configure the server and SFTP credentials yourself.
  • Demo images, fonts, icons and other third-party assets must be checked under their respective licenses and cannot be judged solely from the code's MIT license.
  • External services such as domain, hosting, database, payment or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

a local WordPress install with the plugins above

Original README

mu-plugins/ Must-use plugin sources, installed manually (not deployed)

Original README

Integrations | Stripe, PayPal, Mailchimp, OneSignal, Simple JWT Login

Original README

GA4 and Umami load only after consent

Original README

Every push to `main` triggers `.github/workflows/deploy.yml`

Original README
https://github.com/nearmint/180c-theme/blob/main/LICENSEhttps://github.com/nearmint/180c-theme/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 85 / 100
Technologies
WordPress · Vite
Website type
Blog
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-28
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies WordPress as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 21181095fa7d2f0102e4512db32be471619e5a93a6c1552fc6596e4802a4b93e

2026-10-02T06:37:59.636Z

Source file / repository
# 180c-theme

![WordPress 6.4+](https://img.shields.io/badge/WordPress-6.4%2B-21759B?logo=wordpress&logoColor=white) ![PHP 8.3+](https://img.shields.io/badge/PHP-8.3%2B-777BB4?logo=php&logoColor=white) ![WooCommerce](https://img.shields.io/badge/WooCommerce-Subscriptions-7F54B3?logo=woocommerce&logoColor=white) ![Tailwind CSS v4](https://img.shields.io/badge/Tailwind%20CSS-v4-06B6D4?logo=tailwindcss&logoColor=white) [![License: MIT](https://img.shields.io/badge/License-MIT-green)](LICENSE)

Custom WordPress theme powering [180c.fr](https://www.180c.fr), the website of 180°C, an independent French food magazine: editorial content, a recipe library, a WooCommerce store and paid subscriptions. It also serves the REST API used by the 180°C iOS and Android apps.

## Highlights

- **Editor-driven layouts**: classic PHP templates with an ACF Flexible Content page builder for the home page and landing pages.
- **App-ready API**: `180c/v1` REST namespace (auth, favorites, recipes, push, newsletter) consumed by the native apps via JWT.
- **Native SEO**: meta tags, JSON-LD (`Article`, `Recipe`, `Product`, `FAQPage`, `VideoObject`), sitemap and `llms.txt`, without any SEO plugin.
- **Privacy by design**: in-house consent banner; GA4 and Umami load only after consent.
- **Push notifications**: OneSignal for mobile and web, including automated sends on recipe publication.
- **Hardening in code**: rate limiting, security headers, and TOTP two-factor authentication for the admin account.

## Stack

| Layer | Technology |
|---|---|
| CMS | WordPress 6.4+, PHP 8.3+ |
| Commerce | WooCommerce, WooCommerce Subscriptions, WooCommerce Memberships |
| Content model | ACF Pro, versioned as Local JSON in `acf-json/` |
| Front end | Vite 6, Tailwind CSS v4 (CSS-first), vanilla ES modules, BEM |
| Integrations | Stripe, PayPal, Mailchimp, OneSignal, Simple JWT Login |
| Quality | PHPCS + WordPress Coding Standards, ESLint, Stylelint |

## Getting started

Requirements: PHP 8.3+, Composer, Node 24+, a local WordPress install with the plugins above.

```bash
cd wp-content/themes
git clone https://github.com/nearmint/180c-theme.git
cd 180c-theme
composer install
npm install
npm run build
```

Then activate **180°C** in *Appearance › Themes*. ACF field groups sync from `acf-json/`.

## Development

```bash
npm run dev       # Vite dev server
npm run build     # production build to dist/
npm test          # build + JS unit tests
composer lint     # PHPCS / WPCS
npm run lint      # ESLint + Stylelint
```

Conventions:

- PHP functions and options are prefixed `_180c_`; the text domain is `180c`.
- One feature per file under `inc/`, loaded from `inc/bootstrap.php`.
- CSS follows strict BEM on top of design tokens.
- Commits follow [Conventional Commits](https://www.conventionalcommits.org/); `main` is merged with `--no-ff` only.

## Deployment

Every push to `main` triggers `.github/workflows/deploy.yml`: PHP lint, build, artifact checks, then SFTP upload of the theme to production. `lint.yml` runs PHPCS on PHP 8.3 and 8.5 for `main` and `develop`.

## Project layout

```
inc/            PHP features: blocks, REST API, SEO, WooCommerce, auth, push, analytics
src/            CSS and JS sources, compiled by Vite
parts/          Template parts
woocommerce/    WooCommerce template overrides
acf-json/       ACF field groups (Local JSON)
mu-plugins/     Must-use plugin sources, installed manually (not deployed)
tools/          CI checks (REST argument validation)
```

Further reading: [`CLAUDE.md`](CLAUDE.md) for architecture rules, [`mu-plugins/README.md`](mu-plugins/README.md) for must-use plugins.

## License

[MIT](LICENSE)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

vitepress-theme-sakurairo

vitepress-theme-sakurairo

A VitePress blog theme that ports the visual style of the WordPress Sakurairo theme, rebuilt with Vue 3, TypeScript, and SCSS. It removes many unnecessary DOM elements and organizes code in a component-based way.

WordPress · Blog

medmag-premium-free

medmag-premium-free

Medmag is a WordPress theme for magazines, newspapers, or personal blogs, built on Bootstrap with a responsive, Retina-ready design. The repository includes TypeScript and Sass assets, a Vite build process, Docker configuration, and initialization scripts.

WordPress · Blog

theme-buzz

theme-buzz

Buzz is a typography-driven magazine/journal WordPress Full Site Editing block theme template for Pollora. It uses real templates/*.html and parts/*.html editable in the Site Editor, and is used as a template for pollora:make:theme, with placeholders replaced to generate a new theme.

WordPress · Blog

Project

Project

A WordPress-based student tech publication project featuring three custom post types (Article, Review, Opinion), ACF fields, custom queries, and three custom plugins, with a magazine-style child theme, seed database, and local initialization process.

WordPress · Blog

vitepress-template

vitepress-template

A VitePress-based template for static sites and blogs, built with Vue and Vite, with pnpm dev/build/serve scripts and support for using Vue components and setup syntax sugar directly in Markdown.

Vue · Blog

vitepress-blog-starter

vitepress-blog-starter

A VitePress-based blog starter template with runnable example content for posts and authors, blog logic organized through Composables, UnoCSS styling, and VitePress's built-in local search. It uses pnpm for installation, development, and build, and the repository is MIT licensed.

VitePress · Blog