PHPackages                             seravo/seravo-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. seravo/seravo-plugin

ActiveWordpress-muplugin

seravo/seravo-plugin
====================

Enhances WordPress with Seravo.com specific features and integrations

v1.10.6(5mo ago)40162.2k—6.6%18[31 issues](https://github.com/Seravo/seravo-plugin/issues)[4 PRs](https://github.com/Seravo/seravo-plugin/pulls)1GPL-2.0-or-laterPHPPHP &gt;=7.0CI passing

Since Mar 6Pushed 5mo ago8 watchersCompare

[ Source](https://github.com/Seravo/seravo-plugin)[ Packagist](https://packagist.org/packages/seravo/seravo-plugin)[ Docs](https://seravo.com)[ RSS](/packages/seravo-seravo-plugin/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (5)Versions (150)Used By (1)

[![Seravo.com](https://camo.githubusercontent.com/2d637581f5ef4c21cb3b6ed7d4db1f3a2a1ebaf2b25f08080da4a725dd15f4da/68747470733a2f2f73657261766f2e636f6d2f77702d636f6e74656e742f7468656d65732f73657261766f2f696d616765732f73657261766f2d62616e6e65722d383038783330302e706e67)](https://camo.githubusercontent.com/2d637581f5ef4c21cb3b6ed7d4db1f3a2a1ebaf2b25f08080da4a725dd15f4da/68747470733a2f2f73657261766f2e636f6d2f77702d636f6e74656e742f7468656d65732f73657261766f2f696d616765732f73657261766f2d62616e6e65722d383038783330302e706e67)

Seravo Must-use Plugin
======================

[](#seravo-must-use-plugin)

[![Build Status](https://camo.githubusercontent.com/274518aa75e06b4674fcbb6c33d26f04a6a1b2a321a19517f138d8ea854b6cd1/68747470733a2f2f7472617669732d63692e6f72672f53657261766f2f73657261766f2d706c7567696e2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/seravo/seravo-plugin) [![Latest Stable Version](https://camo.githubusercontent.com/20ef74f4565915e5f219333c3b7c00a81f1d53dcf516064966a4183fd6c84ab0/68747470733a2f2f706f7365722e707567782e6f72672f73657261766f2f73657261766f2d706c7567696e2f762f737461626c65)](https://packagist.org/packages/seravo/seravo-plugin) [![Total Downloads](https://camo.githubusercontent.com/84db5914050362f3025b06b8500ecac3943b4533ce8acf3309e782202c7b503b/68747470733a2f2f706f7365722e707567782e6f72672f73657261766f2f73657261766f2d706c7567696e2f646f776e6c6f616473)](https://packagist.org/packages/seravo/seravo-plugin) [![Latest Unstable Version](https://camo.githubusercontent.com/28165ce9456c52a305edb9d951aaaedc17836e5149f831c3049caed3da954293/68747470733a2f2f706f7365722e707567782e6f72672f73657261766f2f73657261766f2d706c7567696e2f762f756e737461626c65)](https://packagist.org/packages/seravo/seravo-plugin) [![License](https://camo.githubusercontent.com/51992738988163b16978e03ad670ad6829d463b8ff8634bbce49eed4e88f70fe/68747470733a2f2f706f7365722e707567782e6f72672f73657261766f2f73657261766f2d706c7567696e2f6c6963656e7365)](https://packagist.org/packages/seravo/seravo-plugin)

Enhances WordPress with [Seravo.com](https://seravo.com/) specific features and integrations (also known as WP-palvelu.fi in Finland).

Installation
============

[](#installation)

In order to use this with composer you need to add this mu-plugin:

This is because WordPress won't use mu-plugins from their own folders.

Then add this to your composer:

```
{
  "require": {
    "seravo/seravo-plugin": "*"
  },
  "extra": {
    "installer-paths": {
      "htdocs/wp-content/mu-plugins/{$name}/": ["type:wordpress-muplugin"]
    }
  }
}
```

Seravo's customers can simply run `wp-seravo-plugin-update` to get the latest (tagged) release. For the adventurous, get the git master head with `wp-seravo-plugin-update --dev`.

Features
========

[](#features)

- Enforces canonical URLs
- Enforces HTTPS, nags if PHP version is too low, shows a notice is object-cache is not enabled etc
- Shows notifications from WP-palvelu.fi (@TODO: switch to Seravo.com)
- Returns 401 (unauthorized) http status code after failed login.
- Logs all login attempts to /data/log/wp-login.log
- Hides Update nagging since that is handled by Seravo
- Uses nocache headers if the site is in development mode
- Adds Purge Cache -button in adminbar
- Automatically shows the shadow instance switcher is there are any shadow instances.
- Allows to list and reset shadow environments
- Finds and suggests cruft files to remove from a site
- Shows information about the database, table sizes etc
- Show information about disk usage, server logs, updates, tests etc
- And lots, lots more!

Filters
-------

[](#filters)

You can insert your own admin notice for users that are in shadow

```
function my_shadow_admin_notice($admin_notice, $current_screen) {
  return 'This is staging. All content edited here will be lost. Return to production to create or edit content.';
}
add_filter( 'seravo_instance_switcher_admin_notice', 'my_shadow_admin_notice', 10, 2 );
```

Currently the velocity of development is so high that documentation lacks badly behind. To find more filters, just search the source code for `apply_filters`.

Development
-----------

[](#development)

### Using a real site for development

[](#using-a-real-site-for-development)

Some of the features in the Seravo Plugin depend on the API that is available only on a real production site, and thus cannot be tested inside a Vagrant box or the like.

In order to have the git repository on your own computer and in your own editor, while still being able to see the code running on a test site (in the production environment) you can use the command below. It will watch all files for changes and automatically rsync them to the remote server:

```
seravo-plugin$ find * | entr rsync -avz -e 'ssh -q -p 12345' * example@example.seravo.com:/data/wordpress/htdocs/wp-content/mu-plugins/seravo-plugin/
sending incremental file list
README.md

sent 2,999 bytes  received 64 bytes  2,042.00 bytes/sec
total size is 370,596  speedup is 120.99

```

### Installing development dependencies

[](#installing-development-dependencies)

To ease Seravo Plugin development, composer should be used to install development dependencies. Running `composer install` installs PHPCS, PHPCBF, WordPress PHPCS standards and Rector.

### Updating translations

[](#updating-translations)

Remember to update translations of all public facing string by running inside Vagrant:

```
cd /data/wordpress/htdocs/wp-content/mu-plugins/seravo-plugin
wp i18n make-pot . languages/seravo.pot

```

> NOTE! If this fails on `PHP Fatal error:  Uncaught Error: Maximum function nesting level of '256' reached` temporarily remove the overly complex files with `rm js/cruft*`.

Translations can be done for instance by using Poedit. On editor open `languages/seravo-fi.po` and select `Update from pot file` which will update the po file. After translating compile the po file to `seravo-fi.mo` mo file.

### Running Rector and PHPCS

[](#running-rector-and-phpcs)

If you have Rector and PHPCS installed locally with `composer install`, simply run `composer test`. Alternatively run PHPCS inside local Vagrant or Docker image, or on the same remote site used for testing:

```
ssh -q -p 12345 example@example.seravo.com 'cd '/data/wordpress/htdocs/wp-content/mu-plugins/seravo-plugin/ && phpcs
........S.......WWWWWWWWWWEWWEWWWWW.WWEWWWW.W.WWEWWEWEW..... 60 / 68 (88%)
......W.                                                     68 / 68 (100%)

FILE: ...press/htdocs/wp-content/mu-plugins/seravo-plugin/lib/helpers.php
----------------------------------------------------------------------
FOUND 0 ERRORS AND 3 WARNINGS AFFECTING 2 LINES
----------------------------------------------------------------------
 35 | WARNING | Filesystem function dirname() detected with dynamic
    |         | parameter
 35 | WARNING | Line exceeds 100 characters; contains 118 characters
 44 | WARNING | Line exceeds 100 characters; contains 107 characters
----------------------------------------------------------------------
...

```

Rector and PHPCS errors can be automatically fixed with `composer fix`. All Rector errors should be resolved before merging to master even if it's not part of CI tests.

Changelog
=========

[](#changelog)

See git history and [release commit messages](https://github.com/Seravo/seravo-plugin/tags).

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance55

Moderate activity, may be stable

Popularity46

Moderate usage in the ecosystem

Community30

Small or concentrated contributor base

Maturity76

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~49 days

Recently: every ~118 days

Total

80

Last Release

166d ago

PHP version history (3 changes)1.9.31PHP ^5.6 || ^7.0 || ^8.0

1.9.40PHP ^7.0 || ^8.0

1.9.42PHP &gt;=7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/c8f6762f3f88e0fd935c325980505195229a4f2fc7e4aa6fb1858d00a8117423?d=identicon)[Seravo](/maintainers/Seravo)

---

Top Contributors

[![ottok](https://avatars.githubusercontent.com/u/668724?v=4)](https://github.com/ottok "ottok (222 commits)")[![JoosuaKoskinen](https://avatars.githubusercontent.com/u/42264063?v=4)](https://github.com/JoosuaKoskinen "JoosuaKoskinen (181 commits)")[![ypcs](https://avatars.githubusercontent.com/u/97568?v=4)](https://github.com/ypcs "ypcs (28 commits)")[![l3ku](https://avatars.githubusercontent.com/u/24781811?v=4)](https://github.com/l3ku "l3ku (21 commits)")[![Wiljami](https://avatars.githubusercontent.com/u/45056796?v=4)](https://github.com/Wiljami "Wiljami (19 commits)")[![sjaks](https://avatars.githubusercontent.com/u/44066308?v=4)](https://github.com/sjaks "sjaks (17 commits)")[![onnimonni](https://avatars.githubusercontent.com/u/5691777?v=4)](https://github.com/onnimonni "onnimonni (11 commits)")[![frimro](https://avatars.githubusercontent.com/u/78087609?v=4)](https://github.com/frimro "frimro (9 commits)")[![cr0vy](https://avatars.githubusercontent.com/u/43742796?v=4)](https://github.com/cr0vy "cr0vy (8 commits)")[![mvierma](https://avatars.githubusercontent.com/u/26429376?v=4)](https://github.com/mvierma "mvierma (7 commits)")[![szepeviktor](https://avatars.githubusercontent.com/u/952007?v=4)](https://github.com/szepeviktor "szepeviktor (5 commits)")[![AatuYH](https://avatars.githubusercontent.com/u/50293640?v=4)](https://github.com/AatuYH "AatuYH (4 commits)")[![k1sul1](https://avatars.githubusercontent.com/u/2719615?v=4)](https://github.com/k1sul1 "k1sul1 (4 commits)")[![nasusa](https://avatars.githubusercontent.com/u/15683849?v=4)](https://github.com/nasusa "nasusa (4 commits)")[![VeetiYliHemmo](https://avatars.githubusercontent.com/u/42264016?v=4)](https://github.com/VeetiYliHemmo "VeetiYliHemmo (4 commits)")[![simoke](https://avatars.githubusercontent.com/u/25475688?v=4)](https://github.com/simoke "simoke (3 commits)")[![pekkakortelainen](https://avatars.githubusercontent.com/u/61181862?v=4)](https://github.com/pekkakortelainen "pekkakortelainen (3 commits)")[![mikkoaf](https://avatars.githubusercontent.com/u/16817737?v=4)](https://github.com/mikkoaf "mikkoaf (2 commits)")[![eerokokko](https://avatars.githubusercontent.com/u/51294504?v=4)](https://github.com/eerokokko "eerokokko (2 commits)")[![serter](https://avatars.githubusercontent.com/u/1519376?v=4)](https://github.com/serter "serter (2 commits)")

---

Tags

mu-pluginsphpseravowordpresswp-palveluwordpresswpwp-palveluseravoseravo.com

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/seravo-seravo-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/seravo-seravo-plugin/health.svg)](https://phpackages.com/packages/seravo-seravo-plugin)
```

###  Alternatives

[roots/bedrock

WordPress boilerplate with Composer, easier configuration, and an improved folder structure

6.5k441.8k2](/packages/roots-bedrock)[ffraenz/private-composer-installer

A composer install helper for private packages

2331.7M5](/packages/ffraenz-private-composer-installer)[wecodemore/wpstarter

Composer plugin to easily build WordPress websites entirely managed via Composer.

253195.2k6](/packages/wecodemore-wpstarter)[gotoandplay/gravityforms-composer-installer

A composer install helper for Gravity Forms

31389.9k](/packages/gotoandplay-gravityforms-composer-installer)[devgeniem/wp-sanitize-accented-uploads

Replaces accents from future uploads and has wp-cli command which you can use to sanitize current content.

2798.4k5](/packages/devgeniem-wp-sanitize-accented-uploads)[nekojira/wp-api-menus

Extends WordPress WP API with menu routes.

1401.5k](/packages/nekojira-wp-api-menus)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
