• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

251
Views
Block.json devuelve rutas incorrectas

Creé un complemento de bloque personalizado con @wordpress/create-block ( https://developer.wordpress.org/block-editor/reference-guides/packages/packages-create-block/ )

Funciona como un complemento, pero cuando lo muevo al tema, el "editorScript" en el archivo block.json devuelve la ruta incorrecta.

 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" }

Ruta devuelta desde 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

Si registro el script dentro de la función register_block_type, funciona bien

 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' ) );
about 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Registrar un tipo de bloque con block.json usa register_block_script_handle bajo el capó para registrar todos los scripts de bloque relevantes. Esa función usa plugins_url para generar URL si el script usa el patrón file:<path> .

Pasar un identificador ya existente (por ejemplo, mycustomblock-js ) funciona porque register_block_script_handle ve que no es file:<path> y solo usa ese identificador (y la URL correspondiente) tal cual.

about 3 years ago · Santiago Trujillo Report

0

edavis es correcto y se llama al método plugins_url() cuando se colocan en cola las editorScript , editorStyle y style .

Aunque puede pasar otros argumentos a register_block_type para declarar lo que necesita, me gusta la idea de mantener un archivo block.json simple. Para hacer que esto funcione dentro de un tema, utilicé un enlace de filtro para plugins_url para corregir la URL si detecta que la ruta del tema está incluida en la URL.

 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 );
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error