私はワードプレスを使用しています。私が取り組んでいるウェブサイトでは、各サービスと詳細をリストするカスタム投稿タイプを設定しました。
カスタムの連絡先フォームで、カスタムの投稿タイプにクエリを実行して、各投稿のタイトルをオプション リストに取得し、ユーザーが興味のあるサービスを選択できるようにしています。
フォームが送信されたときのフォーム ロジックの一部は、すべての必須フィールドが入力されていることを確認し、そうでない場合は警告を発し、ユーザーに必要な情報を入力するように求めます。
投稿されたデータが失われないようにフォームにエコーバックするための各入力にphpコードがあり、オプションドロップダウンでも同じことをしようとしていますが、本当にイライラする問題に直面しています:
とアンパサンドを含むワードプレスの投稿タイトルは、アンパサンドが & の文字コードに置き換えられています。これは問題ありません。ブラウザーでは & として表示されますが、送信後は投稿データで & に変わります。
各投稿のタイトルを送信された選択と比較しようとすると、& と & が一致しないため、if ステートメントは一致を見つけられません。
wordpress のタイトルで htmlspecialchars_decode() を使用してみましたが、これは & を & にデコードしません。
これを達成し、ポップアップする可能性のある奇妙な文字エンコーディングをデコードする関数を知っている人はいますか?
これが行われる 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;