wordpress block-editor – Gutenberg: ¿Cómo cambiar el estado de una publicación mediante programación?

Pregunta:

Estoy escribiendo un complemento para el editor de Gutenberg.

Sé cómo usar editPost() para cambiar, por ejemplo, algunos meta-valores:

editPost( {
    meta: {
         myMeta: 'new meta value goes here'
    }
} );

Esto está funcionando bien.

Pero cuando intento cambiar el estado de la publicación , por ejemplo, quiero anular la publicación de una publicación:

editPost( {
    status: 'draft' // <-- this does not work
} );

Hay varias otras funciones, como savePost() o trashPost() . No pude encontrar nada para publicar o anular la publicación de una publicación.

¿Cómo puedo cambiar el estado de la publicación dentro de un complemento Gutenberg personalizado?

Respuesta:

Debe llamar a savePost después de llamar a editPost. Refiriéndose a la forma en que la fuente lo maneja: https://github.com/WordPress/gutenberg/blob/trunk/packages/editor/src/components/post-visibility/index.js , muestra que se llama a savePost justo después de cambiar la visibilidad .

En la práctica:

import { PluginPostStatusInfo } from '@wordpress/edit-post';
import { __ } from '@wordpress/i18n';
import { registerPlugin } from '@wordpress/plugins';
import { ToggleControl } from '@wordpress/components';
import { useSelect, useDispatch } from '@wordpress/data';

function PostChangeToggle() {
    const status = useSelect( ( select ) => {
        return select( 'core/editor' ).getEditedPostAttribute( 'status' );
    }, [] );

    const { editPost, savePost } = useDispatch( 'core/editor' );

    return (
        <PluginPostStatusInfo
            name="prefix-post-change"
            title={ __( 'Post Change', 'text-domain' ) }
            className="prefix-post-change"
            initialOpen={ true }
        >
            <ToggleControl
                label={ __( 'Draft', 'text-domain' ) }
                checked={ status === 'draft' }
                onChange={ () => {
                    editPost( {
                        status: status === 'draft' ? 'publish' : 'draft',
                    } );
                    savePost();
                } }
            />
        </PluginPostStatusInfo>
    );
}

registerPlugin( 'prefix-post-change', {
    render: PostChangeToggle,
} );

El código anterior creará un simple alternar entre el borrador y la publicación. Puede cambiar "borrador" u otro estado o un estado personalizado. Tengo un estado "caducado" que controlo de manera similar.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım