Домой Wp-Recall WP-Recall: Проблемы и решения Произвольное поле с типом checkbox
9ответ(ов) в теме
duff
не в сети 9 лет
На сайте с 15.10.2014
Участник
1
17:39

Обнаружил следующую проблему. После создании произвольного поля с типом 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

Проблема только у меня?

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16925
2
17:54

Спасибо.
Открываете файл wp-contentpluginswp-recalladd-onpublicpostindex.php
и сразу после строки 547

if($custom_field['type']=='checkbox'){

вставляете
$vals = array();

0
duff
не в сети 9 лет
На сайте с 15.10.2014
Участник
3
18:09

Добавил, но ошибка не ушла.
Листинг 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);
}

}

0
Андрей CS
не в сети 5 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16925
4
18:18

текст ошибки приведите

0
Вова (Otshelnik-Fm)
не в сети 1 неделя
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
5
18:20

Это

                        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;
                                }
                            }
                        }
                    }

Спасибо за решение Андрею.

0
duff
не в сети 9 лет
На сайте с 15.10.2014
Участник
6
19:25

Ошибка та же:
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 помогло, только теперь не сохраняется значение чекбокса (если его установить).

0
Вова (Otshelnik-Fm)
не в сети 1 неделя
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
7
19:37

проверил - теперь чекбокс ставится

Вы по совету выше

$vals = array();
вставляли?

Надо вписывать тоже

0
duff
не в сети 9 лет
На сайте с 15.10.2014
Участник
8
19:53

Да, вставил, проверил, чекбокс не сохраняется.
Листинг:
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;
}
}
}
}

0
Вова (Otshelnik-Fm)
не в сети 1 неделя
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
9
19:58

обновитесь до версии v.13.8.1

0
Тема закрыта. Публикация новых сообщений запрещена.