web-dev-qa-db-fra.com

Comment obtenir l'ID de l'article actuel dans un bloc Gutenberg/Block Editor?

Je voudrais accéder à l'ID de poste actuel à partir d'un bloc. Selon cette page de documentation , il semblerait que je devrais pouvoir obtenir l’ID de poste avec:

wp.data.getCurrentPostId();
// or
wp.data.withSelect('core/editor').getCurrentPostId();
// or
wp.editor.getCurrentPostId();

mais aucun de ceux-ci sont corrects.

3
JakeParis

Pour obtenir simplement la valeur, vous pouvez appeler le sélecteur:

const post_id = wp.data.select("core/editor").getCurrentPostId();

Dans ce cas, l'ID de publication ne changera pas, vous pouvez donc simplement affecter la valeur à une constante extérieure au composant:

const { Component } = wp.element;
const { getCurrentPostId } = wp.data.select("core/editor");
const post_id = getCurrentPostId();

class Example extends Component {
    render() {
        return <div>{post_id}</div>;
    }
}

Mais si la valeur change, il est préférable de connecter le composant au magasin (par exemple, si vous utilisez getGlobalBlockCount()). Ainsi, chaque fois que la valeur est mise à jour, le sélecteur rend le composant à nouveau. Voici un exemple:

const { Component } = wp.element;
const { withSelect } = wp.data;

class Example extends Component {
    render() {
        const { post_id, block_count } = this.props;

        return <div>{block_count}</div>;
    }
}

export default withSelect(select => {
    const { getCurrentPostId, getGlobalBlockCount } = select("core/editor");

    return {
        post_id: getCurrentPostId(),
        block_count: getGlobalBlockCount()
    };
})(Example);
4
Alvaro