这基本上工作正常。您可能希望在window.superformIds
数组以确保它是字符串。
这是一种糟糕的方式。对于脚本和样式,您希望避免将它们直接输出到页面上放置快捷码的位置。
这里有一个更好的方法:
add_action( \'wp_enqueue_scripts\', \'my_enqueue_scripts\' );
function my_enqueue_scripts() {
wp_register_style( \'superform\', \'https://assets.sokt.io/superform/superform.css\', array(), \'1.0.0\', \'screen\' );
wp_register_script( \'superform\', \'https://assets.sokt.io/superform/superform.js\', array( \'jquery\' ), \'1.0.0\', true );
}
function superForms( $atts ) {
$atts = shortcode_atts(
array(
\'id\' => \'\',
),
$atts
);
wp_enqueue_script( \'superform\' );
wp_enqueue_style( \'superform\' );
wp_localize_script( \'superform\', \'superformIds\', array( $atts[\'id\'] ) );
return \'<div id="\' . $atts[\'id\'] . \'"></div>\';
}
add_shortcode( \'superform\', \'superForms\' );
这将提前注册脚本和样式,允许您在调用快捷码时将它们排队。这可以防止向页面添加多个脚本,因为将某个脚本排队两次只会包含一次。
您还可以为脚本指定依赖项之类的内容。看起来superform需要jQuery。
最后,您可以本地化脚本,该脚本将关联的ID传递给DOM,并使其可用于脚本。
注意,superforms假设jQuery设置为$
. 你也需要处理这个问题。