Php 清理并添加具有未知字段数的Post Meta
我有一个像这样的领域Php 清理并添加具有未知字段数的Post Meta,php,wordpress,loops,Php,Wordpress,Loops,我有一个像这样的领域 <input type="text" name="summary" value="" required /> <input type="text" name="cat_01" value="" /> <input type="number" name="dog_01" value="" /> <input type="number" name="rabbit_01" value="" /> <input type="t
<input type="text" name="summary" value="" required />
<input type="text" name="cat_01" value="" />
<input type="number" name="dog_01" value="" />
<input type="number" name="rabbit_01" value="" />
<input type="text" name="mouse_01" value="" />
<input type="text" name="cat_02" value="" />
<input type="number" name="dog_02" value="" />
<input type="number" name="rabbit_02" value="" />
<input type="text" name="mouse_02" value="" />
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
但是当涉及到我需要存储在DB中的额外post_meta时,我不知道如何进行,因为我不知道表单中会有多少额外字段。这将有所不同
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
所以额外的表单字段可能是这样的
<input type="text" name="summary" value="" required />
<input type="text" name="cat_01" value="" />
<input type="number" name="dog_01" value="" />
<input type="number" name="rabbit_01" value="" />
<input type="text" name="mouse_01" value="" />
<input type="text" name="cat_02" value="" />
<input type="number" name="dog_02" value="" />
<input type="number" name="rabbit_02" value="" />
<input type="text" name="mouse_02" value="" />
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
…但有时可能会有第三组字段,或第四组字段等,而且实际上没有限制,我不知道会有多少组字段
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
例如,如果有第三组这些字段,它们将如下所示:
<input type="text" name="cat_03" value="" />
<input type="number" name="dog_03" value="" />
<input type="number" name="rabbit_03" value="" />
<input type="text" name="mouse_03" value="" />
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
所以你明白了
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
当我不知道我将要捕获什么时,我如何进行清理并添加_post_meta
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
干杯。您可以使用
foreach
迭代任意数量的字段。
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
例如:
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
为什么不让自己轻松一点,并将所有这些数据保存在一个数组中,如下所示:
<!-- With type -->
<input type="text" name="animal[dog][]" value=""/>
<input type="text" name="animal[cat][]" value="" />
<!-- No Type -->
<input type="text" name="animal[]" value="" />
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
这与我已经创建的类似,字段是动态完成的,我们不知道需要节省多少
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
我希望这将为您提供一个如何制作的指南。在下面的代码中,我使用了一个限制为4的数组,直到您使用了您的动物集。然后检查哪个是发布的,然后调整post变量
$sanited_array = array();
for($i = 1 ; $i < 4 ; $i++)
{
if(isset($_POST['cat_0'.$i]))
{
$sanited_array['cat'][] = sanitize_text_field($_POST['cat_0'.$i]);
}
if(isset($_POST['dog_0'.$i]))
{
$sanited_array['dog'][] = sanitize_text_field($_POST['dog_0'.$i]);
}
if(isset($_POST['rabbit_0'.$i]))
{
$sanited_array['rabbit'][] = sanitize_text_field($_POST['rabbit_0'.$i]);
}
if(isset($_POST['mouse_0'.$i]))
{
$sanited_array['mouse'][] = sanitize_text_field($_POST['mouse_0'.$i]);
}
}
update_post_meta( $post_id, 'animal', $sanited_array );
$sanited_array=array();
对于($i=1;$i<4;$i++)
{
如果(isset($\u POST['cat\u 0'.$i]))
{
$sanited_数组['cat'][]=sanitize_文本_字段($\u POST['cat_0'.$i]);
}
如果(isset($\u POST['dog\u 0'.$i]))
{
$sanited_数组['dog'][]=sanitize_文本_字段($\u POST['dog_0'.$i]);
}
如果(isset($\u POST['rabbit\u 0'.$i]))
{
$sanited_数组['rabbit'][]=清理_文本_字段($\u POST['rabbit_0'.$i]);
}
如果(isset($\u POST['mouse\u 0'.$i]))
{
$sanited_数组['mouse'][]=sanitize_文本_字段($\u POST['mouse_0'.$i]);
}
}
更新_post_meta($post_id,$animal',$sanited_数组);
对于那些不熟悉PHP处理POST变量的人来说,这依赖于PHP内置的对提交值的折叠,将以“[]”结尾的名称折叠成一个数组。顺序应始终与DOM顺序相同