WordPress快捷码/仅适用于经典编辑器,古腾堡错误/无效的json响应

时间:2021-11-23 作者:Pbalazs89

我试图允许作者在文章中添加电视图表。为此,我添加了以下短代码:

function cikkek_shortcode($atts) {
$option = shortcode_atts(
    array(
        \'url\'     => \'\',
        \'options\' => \'\',
    
    ),
    $atts
);
?>  

    
<script type="text/javascript" src="https://s3.tradingview.com/tv.js"></script>
<script type="text/javascript">
var tradingview_embed_options = {};
tradingview_embed_options.width = \'640\';
tradingview_embed_options.height = \'400\';
tradingview_embed_options.chart = \'<?php echo $option[\'options\']; ?>\';
new TradingView.chart(tradingview_embed_options);
</script>
<p><a href="<?php echo $option[\'url\']; ?>">
<?php
}
add_shortcode( \'cikkekembed\', \'cikkek_shortcode\' );
我创建了一篇文章,并输入以下内容作为测试:

[cikkekembed url=\'https://www.tradingview.com/chart/PLTR/MRrFdJON-PLTR-diamond-hands/ options=\'MRrFdJON\']
1->;砰,我得到一个无效的json响应。我在网上读了一点,如果我理解正确,HTML标记中的短代码是不可能的?

2->;不管怎样,我试着把一些东西拿出来,但没有用,所以我想这可能与此无关

3->;安装了经典编辑器后,该短代码就像一个魔咒。

我怎样才能在古腾堡工作?

谢谢

1 个回复
SO网友:Pat J

短代码应该永远return 内容,从不echo 它之间的位?><?php 标签<script> 标签和其他内容实际上是echo这意味着Gutenberg期望的JSON内容不再有效。

add_shortcode() docs:

请注意,由shortcode调用的函数应该不会产生任何类型的输出。短代码函数应返回用于替换短代码的文本。直接生成输出将导致意外的结果。

还有,不要发送那些<script> 直接标记,您应该将它们排队。看见wp_enqueue_script(). 由于要将数据从PHP传递到至少一个脚本,请参见wp_localize_script().

相关推荐

仅在一个页面中使用的JavaScript的本地化

Environment:<WordPress 5.8版WPML:4.4.10版What I am trying to achieve?我有一个JavaScript验证脚本,可以验证注册页面上的输入。此脚本显示错误消息。我想要两件事:字符串应使用WPML进行管理/翻译脚本应仅嵌入注册页面What did I already achieve?我向函数中添加了以下脚本。我的主题的php。add_action(\'wp_enqueue_scripts\', function() { // R