Recept: een stap aan de Addofy quick start toevoegen
Doel: je plugin voegt een stap toe aan de Addofy quick start, de wizard die een site langs de eerste instellingen loodst.
De stap
Een stap implementeert AddoBack\Setup\StepInterface. Breid AddoBack\Setup\AbstractStep uit voor standaardwaarden van applies(), fields(), render() en save().
De interface heeft deze onderdelen:
id(): een stabiel id, gebruikt in de URL (&step=...) en de nonce.label(): een korte naam voor de voortgangsbalk.description(): een uitleg van één regel onder de staptitel.applies(): of de stap deel uitmaakt van deze run. Een stap die niet van toepassing is, wordt overgeslagen en niet meegeteld.fields(): schemadefinities van de velden die deze stap bewerkt, op configuratiesleutel.render( $values ): de binnenkant van het stapformulier. De uitvoer moet geëscaped zijn.save( $input ): slaat een verzending op. De nonce en capability zijn al gecontroleerd en de invoer is nog niet gesaneerd.
use AddoBack\Setup\AbstractStep;
final class Myplugin_Step extends AbstractStep {
public function id(): string {
return 'myplugin';
}
public function label(): string {
return __( 'My plugin', 'myplugin' );
}
public function description(): string {
return __( 'Choose how My plugin behaves.', 'myplugin' );
}
public function applies(): bool {
return defined( 'MYPLUGIN_VERSION' ); // Skipped when your plugin is not there.
}
public function render( array $values ): string {
return '<p><label>' . esc_html__( 'Greeting', 'myplugin' )
. ' <input name="' . esc_attr( self::input_name( 'greeting' ) ) . '" value="' . esc_attr( (string) get_option( 'myplugin_greeting', '' ) ) . '"></label></p>';
}
public function save( array $input ): array {
update_option( 'myplugin_greeting', sanitize_text_field( (string) ( $input['greeting'] ?? '' ) ) );
return array(); // Optional keys: goto (a step id), locked, notice.
}
}
Registreren
add_filter( 'adba_setup_steps', static function ( array $steps ) {
$steps[] = new Myplugin_Step( adba() );
return $steps;
} );
AbstractStep neemt de Addofy-container in zijn constructor, dus geef adba() mee. Stappen draaien in de volgorde van de lijst.
Gerelateerd
- Hooks voor instellingen en quick start:
adba_setup_steps,adba_setup_presetsenadba_setup_links. - Instellingentabs, veldtypes en gebruikersvoorkeuren