仅在前端为块注册JS

时间:2022-01-15 作者:CyberJ

我在PHP中使用以下内容来注册我的自定义块:

register_block_type( __DIR__, /* block.json */
  array(
    \'render_callback\' => \'render_my_block\',
    \'script\' => \'my-custom-js\',
  )
);
块已注册,但my-custom-js JS文件加载在前端和后端编辑器中。如何仅在前端加载?

我试过了\'view_script\' => \'my-custom-js\'\'view-script\' => \'my-custom-js\' 但它不起作用。

我知道我可以is_admin() 检查它是否在编辑器中并且没有加载js文件,但我正在尝试查看如何使用register_block_type().

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

如果您使用的是WordPress 5.8(例如,v5.8.3),那么我想答案是:

我知道我可以is_admin() 检查它是否在编辑器中并且没有加载js文件,但我正在尝试查看如何使用register_block_type().

。。是它不能;不在WordPress 5.8中。

更多详细信息摘自https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/#view-script: (*请注意;Since"E;我强调的部分)

查看脚本viewScript
  • Since: WordPress 5.9.0
  • 1 |{ "viewScript": "file:./build/view.js" }

    块类型前端脚本定义。只有在查看网站正面的内容时,它才会排队。

    所以viewScript 属性(inblock.json/JS)或view-script 在PHP中,不起作用,因为属性/参数supported in WordPress 5.9 (道具至https://jeremyfelt.com/2021/12/17/some-block-json-minutia/ ).

    除了只注册脚本句柄之外,还有其他解决方案if ( ! is_admin() ), 您也可以尝试以下方法:

    调用后立即注销脚本register_block_type(). 例如。

    add_action( \'init\', function () {
        register_block_type( __DIR__, /* block.json */
            array(
                \'render_callback\' => \'render_my_block\',
                \'script\'          => \'my-custom-js\',
            )
        );
    
        wp_deregister_script( \'my-custom-js\' );
    } );
    
    wp_enqueue_scripts hook. 例如。

    add_action( \'wp_enqueue_scripts\', function () {
        wp_register_script( \'my-custom-js\', plugins_url( \'build/script.js\', __FILE__ ) );
    }, 9 );
    
    但请确保根据块名称使用正确的脚本句柄。E、 g.如果名称为my-plugin/notice, 那么把手应该是my-plugin-notice-script, i、 e.the/ (斜杠)替换为- (破折号),然后附加-script 在最后。

    尝试(&T);在WordPress v5.8.3中测试工作

    相关推荐

    php-page with db connection

    我必须在Wordpress中的何处存储PHP文件,以便设置DB连接。我当前正在使用此目录,但它不工作。D: \\ WordPress\\xampp\\htdocs\\myproject\\specialsite\\redirect。php目的是通过URL调用PHP文件http://www.myproject.de/specialsite/redirect.php.如何获取DB连接以及此URL?