フロントエンドの投稿フォームについて、ここにいくつかの投稿があります。私はそれらすべてを読みました。今私が出くわすすべてのフォームはあなたが必須にしたいフィールドの値をチェックするように思われる何らかの検証のフォームを持っています。私はそれらを試してみました、そして私は何も働かせることができません。私はただフィールドを必須にすることはできません。フォームに関する他のすべては完璧です。しかし、私は自分の必須フィールドを強制したいと思います(適切なエラーメッセージに対するボーナス)。
私はグーグルを見回してみました、私は本当にJSが私がこれに使用したいものであると思いません。そして他のどんなphpの検証でもうまくいくようには思えません。どういうわけか間違って組み込んでいると思います。
これは私が持っているものです: http://Pastebin.com/rw4c6jZQ (フルテンプレート行9-19は検証されることになっています)
テンプレートの末尾にあるスクリプトを処理します。
<?php
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") {
// Do some minor form validation to make sure there is content
if (isset ($_POST['title'])) {
$title = $_POST['title'];
} else {
echo 'Please enter the wine name';
}
if (isset ($_POST['description'])) {
$description = $_POST['description'];
} else {
echo 'Please enter some notes';
}
$tags = $_POST['post_tags'];
$winerating = $_POST['winerating'];
// ADD THE FORM INPUT TO $new_post ARRAY
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_category' => array($_POST['cat']), // Usable for custom taxonomies too
'tags_input' => array($tags),
'post_status' => 'publish', // Choose: publish, preview, future, draft, etc.
'post_type' => 'post', //'post',page' or use a custom post type if you want to
'winerating' => $winerating
);
//SAVE THE POST
$pid = wp_insert_post($new_post);
//KEEPS OUR COMMA SEPARATED TAGS AS INDIVIDUAL
wp_set_post_tags($pid, $_POST['post_tags']);
//REDIRECT TO THE NEW POST ON SAVE
$link = get_permalink( $pid );
wp_redirect( $link );
//ADD OUR CUSTOM FIELDS
add_post_meta($pid, 'rating', $winerating, true);
//INSERT OUR MEDIA ATTACHMENTS
if ($_FILES) {
foreach ($_FILES as $file => $array) {
$newupload = insert_attachment($file,$pid);
// $newupload returns the attachment id of the file that
// was just uploaded. Do whatever you want with that now.
}
} // END THE IF STATEMENT FOR FILES
} // END THE IF STATEMENT THAT STARTED THE WHOLE FORM
//POST THE POST YO
do_action('wp_insert_post', 'wp_insert_post');
フォームと他のすべてのものは、文脈の中でそれをすべて見るためにペーストビンで見ることができます。どうもありがとう!
フォームの検証を行う最善の方法は、JavaScriptとPHPの組み合わせです。
JavaScript検証を実行したいのは、フォームを送信せずにユーザーにエラーを修正する機会を与えるためです。さらに、それはどんな偶然のミスも止めます。また、JavaScriptが無効になっている場合に備えて、バックエンドでの検証を確実にしたいと思うでしょう。
いずれにせよ、あなたのデータをサニタイズすることはこのプロセスの一部であるべきです。そこにあなたを助けるためにこれらのWordPress機能のいずれかを使ってください: データ検証 。
JavaScriptの検証には、 jQuery検証プラグイン をお勧めします。実装とカスタマイズがとても簡単です。
あなたのPHP検証に関しては、空の値をチェックするためにこれを追加してみることができます:$_POST['title'] != ''
私は思う、phpによる正しい方法はWordPressのesc_attr *関数とこのファイルのすべての関数です。 wp-includes/formatt ing.php
また、PHPからの可能性を使用します。 filter_var