我正在使用ACF插件,总的来说,它工作得很好。
除了一小部分:
我在页面上有一个WYSIWYG文本框,我在其中添加了一些输入,但当我查看控制台时,我得到了一个意外的标记<;错误:
<?php the_field(\'correctoutput\'); ?>
当我尝试使用以下部分时,它只是中断:
<?php echo the_field(\'correctoutput\'); ?>
当我使用时,它也会断裂:
<?php echo json_encode the_field(\'correctoutput\'); ?>
这完全打破了页面:
<?php get_field(\'correctoutput\'); ?>
正确时,应在div中添加一些文本:
$(\'#correcto\').innerHTML (<?php the_field(\'correctoutput\'); ?>);
我也用过。文本
它工作的唯一方法是在变量中捕获它:
<?php $correctoutput = get_post_meta( get_the_ID(), \'correctoutput\', true );
?>
然后输出:
<?php echo json_encode ($correctoutput); ?>
但这将删除
<p></p>
标记。。。这也是问题所在。
SO网友:Johansson
在输出其他代码之前,应该先转义内容。这里最可能发生的事情是这样的:
$(\'correcto\').innerHTML(\'bla bla <a href=\'http://example.com\'>some link</a>\');
或者类似上面的内容,这将破坏语法。通过使用
esc_html
您可以解决此问题:
$(\'#correcto\').innerHTML (\'<?php echo esc_html( get_field("correctoutput") ); ?>\');
两个附加注释
the_field
响应字段的值。你不需要另一个Therecho。如果要返回值,请使用
get_field
取而代之的是始终将值(即使是函数)括在括号中。所以你应该使用
json_encode( get_field(\'correctoutput\') );
(是的,
get_field
, 不
the_field
! )
SO网友:Jacob Peattie
innerHTML的内容缺少引号。
如果correctoutput为<div></div>
, 那么您的脚本如下所示:
$(\'#correcto\').innerHTML(<div></div>);
这是无效的,因为缺少引号。innerHTML需要一个字符串,该字符串在JavaScript中用引号括起来。第一个
<
就是你的错误来源。因此,您需要这样做:
$(\'#correcto\').innerHTML(\'<?php the_field(\'correctoutput\'); ?>\');
这将产生:
$(\'#correcto\').innerHTML(\'<div></div>\');
json_encode
不会导致错误,因为结果是有效的JavaScript类型
<div></div>
, 无引号,不是。