✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Skapa ett anpassat sidofält med PluginSidebar

17

Vi har tagit en titt på anpassade blocksidofält, blockeringssidofält från tredje part via InspectorControls och hur man lägger till kontroller i postsidofältet. I den här guiden ska vi titta på hur vi placerar våra kontroller i deras helt egna anpassade sidofält.

Skapa ett anpassat sidofält med PluginSidebarVår anpassade sidofält

Skärmdumpen ovan visar vad vi ska bygga. För det mesta kommer vi bara att ändra koden som vi byggde i Post Sidebar-guiden något, så se till att du har slutfört den guiden först.

Förutsättningar

Vi kommer att använda koden från Post Sidebar-guiden, så om du inte har slutfört den guiden, vänligen gör det. Det är okej, jag väntar.

Öppna /components/Sidebar.jsfilen som du skapade i föregående guide. Vi kommer att ersätta raden som importerar PluginDocumentSettingPanelmed följande kod:

import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/edit-post';

Byt nu ut markeringen <PluginDocumentSettingPanel...med <PluginSidebar...och jobbet gjort! Höger?

Tja, ja och nej. Det ger oss en sidofält, men det är fult! Vi behöver några paneler så att kontrollerna formateras korrekt.

Även sidofältet saknas i menyn "Alternativ". För att lösa detta måste vi implementera PluginSidebarMoreMenuItem.

Redigera /components/Sidebar.jsigen och klistra in följande kod:

import { Panel, PanelBody, ToggleControl } from '@wordpress/components';
import { dispatch, select } from '@wordpress/data';
import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/edit-post';
import { Component, Fragment } from '@wordpress/element';
import { __ } from '@wordpress/i18n';

export default class Sidebar extends Component {
    render() {
        const meta = select( 'core/editor' ).getEditedPostAttribute( 'meta' );
        const exampleToggle = meta['_wholesomecode_wholesome_plugin_require_login'];

        return (<Fragment>
                <PluginSidebarMoreMenuItem target="wholesomecode-wholesome-plugin-sidebar">
                { __( 'Display Settings', 'wholesome-plugin') }
                </PluginSidebarMoreMenuItem>
                <PluginSidebar
                    name="wholesomecode-wholesome-plugin-sidebar"
                    title={ __( 'Display Settings', 'wholesome-plugin') }
                >
                    <Panel>
                        <PanelBody
                            title={ __( 'Display Settings', 'wholesome-plugin') }
                            icon="visibility"
                        >
                            <ToggleControl
                                checked={ exampleToggle }
                                help={ __( 'User must be logged-in in to view this post.', 'wholesome-plugin') }
                                label={ __( 'Require Login', 'wholesome-plugin') }
                                onChange={ (value) => {
                                    dispatch( 'core/editor' ).editPost( {
                                        meta: {
                                            '_wholesomecode_wholesome_plugin_require_login': value,
                                        },
                                    } );
                                    this.setState( { exampleToggle: value } );
                                } }
                            />
                        </PanelBody>
                    </Panel>
                </PluginSidebar>
            </Fragment>
        );
    }
}

Det är bättre, vi har använt exakt samma kod som i vårt tidigare sidofältsexempel, men nu ser det ut som en del.

Nu när vi har vår kod på plats, glöm inte att köra npm startför att kompilera den, och den ska nu se ut så här:

Skapa ett anpassat sidofält med PluginSidebarVår anpassade sidofält i aktion

Som i vår guide för plugin-sidofältet byter vi växeln kräver inloggning, uppdaterar ett utloggat inlägg, stänger av det igen och uppdaterar inlägget igen. När den är aktiverad kan vi inte komma åt inlägget.

Namnet på vår sidofält är wholesomecode-wholesome-plugin-sidebar'. Om vi ​​vill kan vi automatiskt öppna och stänga sidofältet från någon annanstans i editorn. Låt oss säga att vi har en knapp med en klickåtgärd som gör detta.

Koden för att öppna sidofältet dynamiskt är följande:

wp.data.dispatch('core/edit-post').openGeneralSidebar( 'wholesomecode-wholesome-plugin-sidebar/wholesomecode-wholesome-plugin-sidebar' );

På samma sätt kan vi stänga sidofältet dynamiskt så här:

wp.data.dispatch('core/edit-post').closeGeneralSidebar( 'wholesomecode-wholesome-plugin-sidebar/wholesomecode-wholesome-plugin-sidebar' );

Inspelningskälla: wholesomecode.ltd

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer