✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Crie uma barra lateral personalizada com o PluginSidebar

20

Demos uma olhada nas barras laterais de bloco personalizadas, barras laterais de bloco de terceiros via InspectorControls e como adicionar controles à barra lateral de postagem. Neste guia, veremos como colocar nossos controles em sua própria barra lateral personalizada.

Crie uma barra lateral personalizada com o PluginSidebarNossa barra lateral personalizada

A captura de tela acima mostra o que vamos construir. Na maioria das vezes, vamos apenas alterar um pouco o código que construímos no guia Post Sidebar, portanto, certifique-se de ter concluído esse guia primeiro.

Pré-requisitos

Vamos usar o código do guia Post Sidebar, portanto, se você não tiver concluído esse guia, faça isso. Está tudo bem, vou esperar.

Abra o /components/Sidebar.jsarquivo que você criou no guia anterior. Vamos substituir a linha que importa o PluginDocumentSettingPanelpelo seguinte código:

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

Agora substitua a marcação <PluginDocumentSettingPanel...por <PluginSidebar...e trabalho feito! Certo?

Bem, sim e não. Isso nos dá uma barra lateral, mas é feio! Precisamos de alguns painéis para que os controles sejam formatados corretamente.

Além disso, a barra lateral está faltando no menu ‘Opções’. Para resolver isso, precisamos implementar o PluginSidebarMoreMenuItem.

Edite /components/Sidebar.jsnovamente e cole o seguinte código:

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>
        );
    }
}

Isso é melhor, nós usamos exatamente o mesmo código do nosso exemplo de barra lateral do post anterior, mas agora parece a parte.

Agora que temos nosso código no lugar, não se esqueça de executá npm start-lo para compilá-lo, e agora deve se parecer com o seguinte:

Crie uma barra lateral personalizada com o PluginSidebarNossa barra lateral personalizada em ação

Como em nosso guia da barra lateral de plugins, alternamos a alternância de login obrigatório, atualizamos uma postagem desconectada, desligamos novamente e atualizamos a postagem novamente. Quando alternado, não podemos acessar a postagem.

O nome da nossa barra lateral é wholesomecode-wholesome-plugin-sidebar'. Se desejarmos, podemos abrir e fechar automaticamente esta barra lateral de outro lugar no editor. Digamos que temos um botão com uma ação de clique que faz isso.

O código para abrir a barra lateral dinamicamente é o seguinte:

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

Da mesma forma, podemos fechar dinamicamente a barra lateral assim:

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

Fonte de gravação: wholesomecode.ltd

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação