Обнаружил следующую проблему. После создании произвольного поля с типом checkbox, при создании поста с чекбоксами, если они не установлены (не нажаты), то возникает ошибка:
Warning: Invalid argument supplied for foreach() in /home/msix/msix.ru/docs/wp-content/plugins/wp-recall/add-on/publicpost/index.php on line 559
Warning: Cannot modify header information - headers already sent by (output started at /home/msix/msix.ru/docs/wp-content/plugins/wp-recall/add-on/publicpost/index.php:559) in /home/msix/msix.ru/docs/wp-includes/pluggable.php on line 1207
Проблема только у меня?
Добавил, но ошибка не ушла.
Листинг if:
foreach((array)$get_fields as $custom_field){
$slug = $custom_field['slug'];
if($custom_field['type']=='checkbox'){
$vals = array();
$select = explode('#',$custom_field['field_select']);
$count_field = count($select);
foreach($_POST[$slug] as $val){
for($a=0;$a<$count_field;$a++){
if($select[$a]==$val){
$vals[] = $val;
}
}
}
if($vals){
$res = update_post_meta($post_id, $slug, $vals);
}else{
delete_post_meta($post_id, $slug);
}
}
Это
foreach($POST[$slug] as $val){ for($a=0;$a<$count_field;$a++){ if($select[$a]==$val){ $vals[] = $val; } } }
Замените на:
if(isset($POST[$slug])){ foreach($POST[$slug] as $val){ for($a=0;$a<$count_field;$a++){ if($select[$a]==$val){ $vals[] = $val; } } } }
Спасибо за решение Андрею.
Ошибка та же:
Warning: Invalid argument supplied for foreach() in /home/msix/msix.ru/docs/wp-content/plugins/wp-recall/add-on/publicpost/index.php on line 559
Warning: Invalid argument supplied for foreach() in /home/msix/msix.ru/docs/wp-content/plugins/wp-recall/add-on/publicpost/index.php on line 559
Warning: Cannot modify header information - headers already sent by (output started at /home/msix/msix.ru/docs/wp-content/plugins/wp-recall/add-on/publicpost/index.php:559) in /home/msix/msix.ru/docs/wp-includes/pluggable.php on line 1207
Решение Otshelnik-Fm помогло, только теперь не сохраняется значение чекбокса (если его установить).
Да, вставил, проверил, чекбокс не сохраняется.
Листинг:
if($custom_field['type']=='checkbox'){
$vals = array();
$select = explode('#',$custom_field['field_select']);
$count_field = count($select);
if(isset($POST[$slug])){
foreach($POST[$slug] as $val){
for($a=0;$a<$count_field;$a++){
if($select[$a]==$val){
$vals[] = $val;
}
}
}
}