【发布时间】:2018-06-23 16:24:24
【问题描述】:
我正在构建一个自定义 wordpress 插件,它将在主页上显示 contactform7 表单。
工作流程:
1.用户使用contactform7创建表单并复制简码
2.用户在插件的设置表单中输入值/简码
3.Plugin 使用 $_POST['the-shortcode'] 捕获值/短代码
4.插件将值/简码保存在 wp_options 数据库中
5.Plugin echo out 或 do_shortcode 显示 values/shortcode/CF7 表单
我的问题: 每当我保存联系表格 7 简码时 通过插件的设置表单
[contact-form-7 id="4" title="联系表格 1"]
变成这样:(注意有一些\)
[contact-form-7 id=\"4\" title=\"联系表格1\"]
我尝试使用 esc_attr() 但它不起作用。
esc_attr($_POST['the-shortcode'])
如何按原样保存联系表格 7 短代码 到 wp_options 数据库,以便我可以回显 do_shortcode('theshortcode') ?
这是插件设置表单的代码:
<?php
global $options;
$cform_shortcode = esc_attr($_POST['cform_shortcode']);
$options['cform_shortcode'] = $cform_shortcode;
update_option('plugin_databasename_db', $options);
$options = get_option('plugin_databasename_db');
$cform_shortcode = $options['cform_shortcode'];
?>
<table>
<tr>
<td scope="row"><label for="tablecell">
Contact Form ShortCode
</label></td>
<td scope="row"><label for="tablecell">
<textarea name="cform_shortcode" id="" cols="80" rows="3"><?php if (isset($cform_shortcode)) {echo $cform_shortcode;} else {'';} ?></textarea>
</label></td>
</tr>
</table>
这是前端的代码:
<?php
global $options;
$options = get_option('plugin_databasename_db');
if ( isset( $options['cform_title'] ) && isset( $options['cform_shortcode'] ) ){ ?>
<p class="wpic-strong"><?php echo $options['cform_title']?></p>
<div class="list-group-item-video">
<?php echo do_shortcode($options['cform_shortcode']); ?>
</div>
<br/>
<?php
} else {
'';
}
?>
【问题讨论】:
-
这应该可以,但是您没有提供足够的信息来进行故障排除。您的代码在哪里显示如何将短代码保存到选项表?以及从选项表中将其加载回哪里?
-
@cale_b 感谢您的回复。请看上面的代码。刚刚添加。
-
短代码必须用方括号括起来,即使在
do_shortcode函数内也是如此。所以 - 答案是do_shortcode('[' . stripslashes($options['cform_shortcode']) . ']'); -
@cale_b... 感谢您抽出宝贵时间,非常感谢。我试过你的代码,它返回 --> [contact-form-7 id=\"4\" title=\"Contact form 1\"]。所以我坚持使用另一个有效的方法。再次感谢您的帮助。
标签: php wordpress contact-form-7 wordpress-shortcode