Block.json gibt falsche Pfade zurück

Lesezeit: 2 Minuten

Benutzer-Avatar
Jonatanbs

Ich habe ein benutzerdefiniertes Block-Plugin mit @wordpress/create-block (https://developer.wordpress.org/block-editor/reference-guides/packages/packages-create-block/)

Es funktioniert als Plugin, aber wenn ich es in das Design verschiebe, gibt das “editorScript” in der block.json-Datei den falschen Pfad zurück.

themeDirectory/blocks/mycustomblock/block.json

{
    "name": "create-block/mycustomblock",
    "title": "Mycustomblock",
    "description": "Example block written with ESNext standard and JSX support – build step required.",
    "category": "text",
    "icon": "smiley",
    "supports": {
        "html": false
    },
    "attributes":{
        "backgroundColor": {
            "type": "string",
            "default": "red"
        }
    },
    "editorScript": "file:./build/index.js"
}

Zurückgegebener Pfad von editorScript:

404 | http://localhost:8888/wordpress-test/wp-content/plugins/Users/jonrose/Dropbox/htdocs/wordpress-test/wp-content/themes/mytheme/blocks/mycustomblock/build/index.js?ver=4f45658ee3212a45c5d5367f6fbdfeba

Wenn ich das Skript in der Funktion register_block_type registriere, funktioniert es einwandfrei

wp_register_script( 'mycustomblock-js', get_template_directory_uri() . '/blocks/mycustomblock/build/index.js', array( 'wp-blocks' ));

    register_block_type( __DIR__, array(
        'editor_script' => 'mycustomblock-js'
    ) );

  • Ich habe das gleiche Problem. Haben Sie herausgefunden, wie Sie den relativen Pfad so einstellen, dass er in Ihrem Design anstelle von Plugins angezeigt wird?

    – Taishi

    17. September 2021 um 13:01 Uhr

  • Nein. Ich bin einfach mit der Lösung im letzten Beispiel gegangen

    – Jonatanbs

    24. September 2021 um 0:22 Uhr

  • Ich denke, dass die Erstellung von Gutberg-Blöcken mit dem block.json-Deskriptor nicht für die Verwendung innerhalb eines Themas gedacht ist, aber es könnte gleichzeitig ein Fehler sein: P. Haben Sie dieses Problem gemeldet? Ihre Lösung ist in Ordnung, aber ich weiß nicht, ob auch andere Pfade (Assets?) Betroffen sind

    – KB

    11. Oktober 2021 um 23:27 Uhr


  • Dieses Verhalten wurde als Fehler gemeldet und wird in WordPress Version 6.0 behoben. Github-Pull-Request: github.com/WordPress/wordpress-develop/pull/2494

    – Branislaw

    22. Mai um 19:19 Uhr

Registrierung eines Blocktyps mit block.json Verwendet register_block_script_handle unter der Haube, um alle relevanten Blockskripte zu registrieren. Diese Funktion verwendet plugins_url um URLs zu generieren, wenn das Skript die verwendet file:<path> Muster.

Übergeben eines bereits vorhandenen Handles (z. B. mycustomblock-js) funktioniert, weil register_block_script_handle sieht es nicht file:<path> und verwendet dieses Handle (und die entsprechende URL) einfach unverändert.

edavis hat recht und das plugins_url() -Methode wird aufgerufen, wenn die editorScript, editorStyleund style Pfade.

Obwohl Sie andere Argumente an übergeben können register_block_type Um zu erklären, was Sie brauchen, mag ich die Idee, einfach zu bleiben block.json Datei. Damit dies innerhalb eines Themas funktioniert, habe ich einen Filter-Hook verwendet plugins_url um die URL zu korrigieren, wenn erkannt wird, dass der Themenpfad in der URL enthalten ist.

add_filter( 'plugins_url', function ( $url, $path, $plugin ) {
    if ( strpos( $url, get_template_directory() ) !== false ) {
        $url = str_replace( 'wp-content/plugins' . get_home_path(), '', $url );
    }

    return $url;
}, 10, 3 );

1373270cookie-checkBlock.json gibt falsche Pfade zurück

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy