Zentrale Einstellungen mit Ausnahmen je Website
Ein Must-Use-Plugin setzt die Schalter von Easy SVG und Easy SVG Pro per Code auf jeder Website, mit Ausnahmen je Website, Umgebung und Multisite-Netzwerk.
Beide Plugins speichern ihre Schalter in drei WordPress-Optionen. Ein Must-Use-Plugin filtert sie. So hat jede Website dieselben Werte, und du änderst sie an genau einer Stelle: im Code.
| Option | Was drinsteht |
|---|---|
easy_svg_settings | Freies Plugin: svg_upload, icons, max_mb |
easy_svg_pro_features | Pro-Funktionsschalter, zum Beispiel collections, editor, sources, cli, presets |
easy_svg_pro_settings | Pro-Einstellungen: size_enabled, max_mb, tags_enabled, extra_tags, extra_attrs |
1. Das Must-Use-Plugin
<?php
/**
* Plugin Name: Agency Easy SVG settings
* Description: Easy SVG and Easy SVG Pro switches for every site.
*/
defined( 'ABSPATH' ) || exit;
/**
* Code defaults, then the network's values, then this site's values.
*/
function agency_easy_svg_config(): array {
$config = array(
'easy_svg_settings' => array(
'svg_upload' => true,
'icons' => true,
'max_mb' => 2,
),
'easy_svg_pro_features' => array(
'collections' => true,
'editor' => true,
'sources' => true,
'cli' => true,
'presets' => true,
),
'easy_svg_pro_settings' => array(
'tags_enabled' => false,
),
);
// Example: never fetch preset sets on a local copy.
if ( 'local' === wp_get_environment_type() ) {
$config['easy_svg_pro_features']['presets'] = false;
}
if ( is_multisite() ) {
$network = get_site_option( 'agency_easy_svg', array() );
$config = array_replace_recursive( $config, is_array( $network ) ? $network : array() );
}
$site = get_option( 'agency_easy_svg', array() );
return array_replace_recursive( $config, is_array( $site ) ? $site : array() );
}
/**
* Lay the configured keys over whatever the site has stored.
*/
function agency_easy_svg_force( $value, $option ) {
$forced = agency_easy_svg_config()[ $option ] ?? array();
return array_replace( is_array( $value ) ? $value : array(), $forced );
}
add_filter( 'option_easy_svg_settings', 'agency_easy_svg_force', 10, 2 );
add_filter( 'default_option_easy_svg_settings', 'agency_easy_svg_force', 10, 2 );
add_filter( 'option_easy_svg_pro_features', 'agency_easy_svg_force', 10, 2 );
add_filter( 'default_option_easy_svg_pro_features', 'agency_easy_svg_force', 10, 2 );
add_filter( 'option_easy_svg_pro_settings', 'agency_easy_svg_force', 10, 2 );
add_filter( 'default_option_easy_svg_pro_settings', 'agency_easy_svg_force', 10, 2 );
Schlüssel in der Konfiguration sind fest. Alles, was du weglässt, bleibt auf jeder Website unter Icons → Funktionen, Icons → Einstellungen und Icons → Konfigurator änderbar.
2. Einen Wert auf einer Website überschreiben
wp option update agency_easy_svg '{"easy_svg_pro_features":{"presets":false}}' --format=json
wp option update agency_easy_svg '{"easy_svg_pro_features":{"presets":false}}' --format=json --url=client.example.com
wp site option update agency_easy_svg '{"easy_svg_pro_features":{"styles":true}}' --format=json
Eine Ausnahme entfernst du mit wp option delete agency_easy_svg (oder wp site option delete agency_easy_svg).
Woran du siehst, dass es geklappt hat
- Icons → Funktionen zeigt die konfigurierten Schalter auf jeder Website eingeschaltet.
wp option get easy_svg_pro_features --format=jsongibt deine Werte aus, auch auf einer Website, die ihre Einstellungen nie gespeichert hat.
Stolperfallen
init. Filter aus einem normalen Plugin oder aus einem Hook kommen für SVG-Uploads zu spät.- Fest heißt fest. Ein erzwungener Schlüssel hat im wp-admin weiterhin seinen Schalter. Umschalten speichert zwar, aber beim nächsten Laden steht wieder der Wert aus deinem Code da. Sag deinen Kunden, welche Schalter dir gehören.
- Die Lizenz entscheidet trotzdem. Ein erzwungener Pro-Schalter wirkt erst, wenn die Lizenz der Website aktiv ist. Bei Multisite deckt ein Platz das ganze Netzwerk ab.
- Grenzen gelten weiter.
max_mbwird auf 1 bis 20 MB begrenzt, egal was du einträgst. Unsichere Namen inextra_tagsundextra_attrs(etwascriptoderonclick) fliegen raus.