Blog

Code Snippet: Oxygen Farben in Gutenberg

Version: 1.0.3 (28.12.2023)

Einführung

Oxygen ist ein mächtiges Plugin für WordPress, welches das WordPress Theme deaktiviert, die Erstellung eigener Templates mit einem visuellen Builder unterstützt, und damit ein ganz individuelles Design für die Website ermöglicht.

Innerhalb des Oxygen Builders kann man globale Farben definieren, die dann in allen Farbauswahl-Feldern des Builders zur Verfügung stehen.
Der Gutenberg Editor bietet allerdings eine eigene Farbpalette an, die nicht unbedingt mit dem Design der Website übereinstimmt.

Lösung

Mein Code Snippet ersetzt die Gutenberg Farbpalette durch die Oxygen Farbpalette.

Gutenberg Farbpalette
Oxygen Parbpalette

Download

Das Code Snippet steht hier zum Download zur Verfügung:

ma-oxygen-colors-gutenberg.code-snippets.json
Version 1.0.3, 2023-12-28

Zur Beachtung: Der Titel des Code Snippets hat sich geändert von früher "Oxygen: Global Colors in Gutenberg" zu jetzt "MA Oxygen Colors Gutenberg".

Zur Installation und Nutzung dieser JSON Datei wird das Plugin Code Snippets oder Advanced Scripts benötigt.
Dort kann diese JSON Datei mit der Funktion "Import" hochgeladen und anschließend aktiviert werden.

Alternativ: Am Ende dieser Seite kann der vollständige Source Code des Snippets eingesehen und kopiert werden.

Im Change Log sind neue Funktionalitäten und Fehlerbehebungen dokumentiert.

Spenden

Es macht mir viel Freude, Code Snippets zu entwickeln und damit Anforderungen zu lösen. Die Snippets stelle ich kostenfrei zur Verfügung.

Wenn Du möchtest, kannst Du meine vielen Stunden Arbeit mit einer kleinen Kaffee-Spende über PayPal honorieren.

  Bei Klick auf den Button wird eine Verbindung zu PayPal aufgebaut.

Spenden werden selbstverständlich ordnungsgemäß durch mich versteuert.

Konfiguration

Im Code Snippet gibt es zwei Konfigurations-Optionen. Diese können im Abschnitt "Configuration" (ca. Zeile 25) geändert werden.

$add_black_white
true: Fügt schwarz und weiß hinzu
false: Schwarz und weiß werden nicht hinzugefügt

$allow_custom_color
true: Erlaubt die Definition von benutzerdefinierten Farben
false: Der Link für benutzerdefinierte Farben wird nicht angezeigt.

Disclaimer

Das Code Snippet habe ich nach bestem Wissen und Gewissen unter WordPress 5.7 und Oxygen 3.7.1 entwickelt und getestet.
Ich stelle das Code Snippet zur freien Verwendung zur Verfügung.
Eine Garantie für die Funktionalität in allen denkbaren WordPress Umgebungen kann ich nicht geben. 
Download und Nutzung dieses Code Snippets erfolgen auf eigene Gefahr und Verantwortung.

Change Log

Siehe Source Code.

Source Code

<?php
/*
Plugin Name:  MA Oxygen Colors Gutenberg
Description:  Provide Oxygen colors in Gutenberg
Author:       <a href="https://www.altmann.de/">Matthias Altmann</a>
Version:      1.0.3
Plugin URI:   https://www.altmann.de/en/blog-en/code-snippet-oxygen-colors-in-gutenberg/
Description:  en: https://www.altmann.de/en/blog-en/code-snippet-oxygen-colors-in-gutenberg/
              de: https://www.altmann.de/blog/code-snippet-oxygen-farben-in-gutenberg/
Copyright:    © 2020-2023, Matthias Altmann

Version History:
Date		Version		Description
---------------------------------------------------------------------------------------------------------------------
2023-12-28	1.0.3		Test
						- WordPress 6.4.2, Oxygen 4.8
2023-01-02	1.0.2		Test:
						- WordPress 6.1.1, Oxygen 4.3
						Changes:
						- Initialization
						- Increase specificity for CSS rules for WP 6.1.1
2022-02-11				Test:
						- PHP 8.0, WordPress 5.9, Oxygen 4.0 beta 1
						Changes:
						- Black & white not added by default
2021-03-21  1.0.1       Bug Fix: Only initialize if Oxygen plugin is active
                        (Thanks to Adrien Robert for reporting!)
2020-12-29 	1.0.0		Initial Release 
2020-12-29				Development start
*/

class MA_Oxygen_Colors_Gutenberg {
	const TITLE			= 'MA Oxygen Colors Gutenberg';
	const SLUG			= 'ma_oxygen_colors_gutenberg';
	const VERSION		= '1.0.3';

	// Configuration
	private static $debug				= false;	// caution! may produce a lot of output
	private static $timing				= false;	// caution! may produce a lot of output
	private static $add_black_white     = false;	// automatically add black and white colors
	private static $allow_custom_color  = true;		// allow custom color settings in Gutenberg

	//-------------------------------------------------------------------------------------------------------------------
	static function init() {
		add_action('after_setup_theme', [__CLASS__, 'palette_backend']);
		add_action('enqueue_block_assets', [__CLASS__, 'palette_frontend']);
	}
	//-------------------------------------------------------------------------------------------------------------------
	// Add Oxygen's global colors to Gutenberg's backend editor palette
	static function palette_backend() {
		$st = microtime(true);

		$gutenberg_colors = [];
		if (self::$add_black_white) {
			// add black and white
			$gutenberg_colors[] = [ 'name' => 'black', 'slug' => 'color-black', 'color' => '#000000' ];
			$gutenberg_colors[] = [ 'name' => 'white', 'slug' => 'color-white', 'color' => '#ffffff' ];
		}
		// add oxygen global colors
		$oxy_colors = oxy_get_global_colors();
		foreach($oxy_colors['colors'] as $oxy_color) {
			$gutenberg_colors[] = [ 'name' => $oxy_color['name'], 'slug' => 'color-'.$oxy_color['id'], 'color' => $oxy_color['value'] ];
		}
		add_theme_support( 'editor-color-palette', $gutenberg_colors );
		if (!self::$allow_custom_color) {
			add_theme_support( 'disable-custom-colors' );
		}

		if (WP_DEBUG && self::$debug) {error_log(sprintf('%s::%s() gutenberg_colors: %s',self::TITLE,__FUNCTION__,print_r($gutenberg_colors,true)));}
		$et = microtime(true);
		if (WP_DEBUG && self::$timing) {error_log(sprintf('%s::%s() Timing: %.5f sec.',self::TITLE,__FUNCTION__,$et-$st));}
	}

	//-------------------------------------------------------------------------------------------------------------------
	// Add corresponding CSS to frontend Gutenberg blocks
	static function palette_frontend(){
		$st = microtime(true);

		$gutenberg_colors_frontend_css = '';
		if (self::$add_black_white) {
			// add black and white
			$gutenberg_colors_frontend_css .= 'body.oxygen-body .has-color-black-color{color:#000000;}';
			$gutenberg_colors_frontend_css .= 'body.oxygen-body .has-color-black-background-color{background-color:#000000;}';
			$gutenberg_colors_frontend_css .= 'body.oxygen-body .has-color-white-color{color:#ffffff;}';
			$gutenberg_colors_frontend_css .= 'body.oxygen-body .has-color-white-background-color{background-color:#ffffff;}';
		}
		// add oxygen global colors
		$oxy_colors = oxy_get_global_colors();
		foreach( $oxy_colors['colors'] as $oxy_color) {
			$gutenberg_colors_frontend_css .= 'body.oxygen-body .has-color-'.$oxy_color['id'].'-color {color:'.$oxy_color['value'].'}';
			$gutenberg_colors_frontend_css .= 'body.oxygen-body .has-color-'.$oxy_color['id'].'-background-color{background-color:'.$oxy_color['value'].'}';
		}
		wp_register_style('gutenberg-oxygen-colors', false );
		wp_enqueue_style('gutenberg-oxygen-colors');
		wp_add_inline_style('gutenberg-oxygen-colors', $gutenberg_colors_frontend_css );

		if (WP_DEBUG && self::$debug) {error_log(sprintf('%s::%s() gutenberg_colors_frontend_css: %s',self::TITLE,__FUNCTION__,print_r($gutenberg_colors_frontend_css,true)));}
		$et = microtime(true);
		if (WP_DEBUG && self::$timing) {error_log(sprintf('%s::%s() Timing: %.5f sec.',self::TITLE,__FUNCTION__,$et-$st));}

	}

}



//===================================================================================================================
// Initialize
add_action('setup_theme',function(){
	if (!defined('CT_VERSION'))	return;	// only initialize if Oxygen plugin is active
	if (wp_doing_ajax()) 		return;	// don't run for AJAX requests
	if (wp_doing_cron()) 		return;	// don't run for CRON requests
	if (wp_is_json_request()) 	return;	// don't run for JSON requests
	MA_Oxygen_Colors_Gutenberg::init();
},1005); 
Erstveröffentlichung: 29.12.2020 auf Code Snippet: Oxygen Farben in Gutenberg
magnifier