我正在使用wordpress,而对于我正在处理的网站,我已经设置了一个自定义帖子类型,用于列出他们的每项服务和详细信息。
在他们的自定义联系表单上,我查询自定义帖子类型以将每个帖子的标题放入选项列表中,以便用户可以选择他们感兴趣的服务。
提交表单时表单逻辑的一部分检查是否填写了所有必填字段,如果没有,则会发出警报并要求用户填写所需信息。
我在每个输入中都有一段php代码,用于将发布的数据回显到表单中,这样它就不会丢失,我正在尝试为选项下拉做同样的事情,但我遇到了真是令人沮丧的问题:
任何带有&ampersand的wordpress帖子标题都是用&#038的字符代码替换了&符号,这很好,它显示为&在我的浏览器中,但在提交之后它变成了&在帖子数据中。
当我尝试将每个帖子标题与提交的选择进行比较时,if语句永远找不到匹配,因为&#038和&不匹配。
我尝试在wordpress的标题上使用htmlspecialchars_decode(),但这并没有将&#038解码回&。
有没有人知道要完成此任务的函数并解码可能弹出的任何奇怪的字符编码?
这是我的while循环。
while ($custom_post_type->have_posts()) : $custom_post_type->the_post();
//set selected if submission is bouncing back
if($_POST['ftype'] == get_the_title())
{
$the_selected = ' selected="selected" ';
}
else
{
$the_selected = '';
}
?>
<option value="<?php echo get_the_title(); ?>" <?php echo $the_selected; ?>><?php echo get_the_title(); ?></option>
<?php
endwhile;
答案 0 :(得分:5)
html_entity_decode
应该有用。
echo html_entity_decode('&');
答案 1 :(得分:-2)
有一个WordPress插件可以帮助你:
https://wordpress.org/plugins/wp-no-format/
这个插件的想法是让你阻止WordPress格式化 您的帖子的特定部分中的HTML。
使用起来非常简单,你只需要写:
<!-- noformat on -->
在WordPress编辑器上,就在您要保护的部分之前,以及 从那时起,WordPress将不会触及您编写的HTML代码。如果 你想恢复你必须输入的标准“格式化”:
<!-- noformat off -->