Farbverlauf – Component
Neben dem Color Picker und Color Palett gibt es seit der neuen WordPress Version sogar ein Farbverlauf Component. Dieser ermöglicht dir Farbverläufe zu erstellen innerhalb vom Gutenberg Editor.

Einstieg

Vorerst sei gesagt, diese Funktion ist noch WIP. Allerdings ist es tatsächlich schon im WordPress Core drin. Also können wir erstmal ohne Bedenken verwenden. In diesem Tutorial wollen wir folgendes schaffen.
Sieht auf jeden Fall nicht kompliziert aus, allerdings dies zu entwickeln braucht man tatsächlich etwas Gutenberg Erfahrung. Allerdings bietet die Funktion einfache Parameter an, die man als Gutenberg Entwickler schon weiß.

Attribute anpassen

Als erstes registrieren wir einen neuen Block und geben folgende Attribute mit:
1
// GradientColor
2
bgGradient:{
3
type: 'string'
4
}
Copied!

Component importieren

Als erstes müssen wir das Component importieren. Es liegt leider nicht unter wp.components, sondern unter wp.blockEditor.
1
import {
2
__experimentalGradientPicker as GradientPicker
3
} from '@wordpress/block-editor';
Copied!
Die Funktion die wir brauchen heißt: __experimentalGradientPicker allerdings ist es wie bereits erwähnt eine Testvariante im WordPress Core. Damit ich allerdings übersichtlich damit arbeiten kann, habe ich den Schlüsselbegriff "as" eingegeben, sodass ich einen eigene Funktionsnamen vergeben kann. In diesem Fall habe ich es GradientPicker genannt.
Innerhalb der Return Funktion rufe ich dann im React DOM die Funktion.
1
<GradientPicker
2
className="gradient__picker"
3
value={attributes.bgGradient}
4
onChange= { ( data ) => {
5
setAttributes({
6
bgGradient: data
7
});
8
}}
9
10
// disableCustomGradients={true}
11
// clearable={ false }
12
/>
Copied!
Wie man hier sieht sind hier die bekannten Parameter von Gutenberg & React wiederverwendet. Mit ClassName kann man eine individuelle Klasse vergeben und beim value sind die gespeicherte Attribute, wo tatsächlich der fertige Background CSS Code vom Farbverlauf hinterlegt wurde.
Beim OnChange holen wir uns vom Event, sobald der User einen Farbverlauf ausgewählt hat die gesamten Werte und speichern es in dem Attribut.
Der Befehl disableCustomGradients kann angegeben werden, wenn man tatsächlich keine eigene Farbverläufe bearbeiten möchte. Somit hat der User keine Erlaubnis dazu.
Der Befehl clearable ist einfach ein Button, der angezeigt wird, wenn man alle Einstellungen zurücksetzten möchte.

Globale Verläufe

Natürlich kann man auch globale Einstellungen vornehmen und die in der Palette anbieten. Es handelt sich hier wieder um einem Theme Support, der im Theme oder im Plugin aktiviert werden kann. Der Befehl wäre editor-gradient-presets
1
add_theme_support(
2
'editor-gradient-presets',
3
array(
4
array(
5
'name' => __( 'Vivid cyan blue to vivid purple' ),
6
'gradient' => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
7
'slug' => 'vivid-cyan-blue-to-vivid-purple'
8
),
9
array(
10
'name' => __( 'Vivid green cyan to vivid cyan blue' ),
11
'gradient' => 'linear-gradient(135deg,rgba(0,208,132,1) 0%,rgba(6,147,227,1) 100%)',
12
'slug' => 'vivid-green-cyan-to-vivid-cyan-blue',
13
),
14
array(
15
'name' => __( 'Light green cyan to vivid green cyan' ),
16
'gradient' => 'linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)',
17
'slug' => 'light-green-cyan-to-vivid-green-cyan',
18
),
19
array(
20
'name' => __( 'Luminous vivid amber to luminous vivid orange' ),
21
'gradient' => 'linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%)',
22
'slug' => 'luminous-vivid-amber-to-luminous-vivid-orange',
23
),
24
array(
25
'name' => __( 'Luminous vivid orange to vivid red' ),
26
'gradient' => 'linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%)',
27
'slug' => 'luminous-vivid-orange-to-vivid-red',
28
)
29
)
30
);
Copied!

Eigene Verläufe deaktivieren

Auch hier handelt es sich wieder um einem Theme Support Befehl. Hier kann man bestimmen, wenn man eigene Verläufe anpassen möchte. Der Befehl heißt disable-custom-gradients
1
// Disable Custom Gradients
2
add_theme_support('disable-custom-gradients', true);
Copied!

Einstellungen

Hier ein Beispiel, wie man dann die Farbverläufe anpassen kann.

Ausgabe

Da im Attribut der CSS Code tatsächlich hinterlegt wurde, kann man ihm dann als inline CSS Attribut ausgeben.
1
<section style={ background: props.attributes.bgGradient }
Copied!
Last modified 1yr ago