Просьба не кидать в меня тапки - я только учусь. Вытащила из старой темы для вордпресс скрипт рейтинга, установила в новую тему. А он выдает ошибку: Undefined array key "vote-post-274" in rating.php on line 30 PHP: function rating($voted=true) { if($voted) { $disable_class = !!$_COOKIE["vote-post-". get_the_ID()]? ' disabled':''; } else { $disable_class = ' disabled'; } Строка 30 это: PHP: $disable_class = !!$_COOKIE["vote-post-". get_the_ID()]? ' disabled':''; Помогите, плиз, исправить ошибку
Добрый день! Вообще-то это не ошибка, а предупреждение. Код, который Вы взяли был написан не для PHP 8.*, в котором Вы сейчас работете. Нужно использовать функцию isset PHP: isset($_COOKIE["vote-post-". get_the_ID()])? ' disabled':''; Удачи!
Большое спасибо. Исправила, но теперь вылезло следующее предупреждение: Warning: Undefined variable $disable_class in rating.php on line 49 PHP: echo '<div class="vote-block'.$disable_class.'" data-id="'. get_the_ID() .'" data-total="'. $total_rec .'" data-rating="'. $rating .'">'.$richSnp.''.$ratingHTML.'</div>'; Пытаюсь сделать проверку, но похоже, что-то делаю неправильно - рейтинг вообще перестал показываться: PHP: if ( isset( $disable_class ) ) { echo '<div class="vote-block'.$disable_class.'" data-id="'. get_the_ID() .'" data-total="'. $total_rec .'" data-rating="'. $rating .'">'.$richSnp.''.$ratingHTML.'</div>'; }
Добрый день! Поробуйте в редакторе сделать поиск на $disable_class. У Вас Undefined variable $disable_class, поэтому проверка if ( isset( $disable_class ) ) возвращает false и echo не работает. Если здесь должен выводится рейтиг, то нужно подумать о том, как опредять эту переменную, например PHP: if (!isset( $disable_class ) ) $disable_class = $default_value; Удачи!
Да, только, если надо этот блок вынести, независимо от того, определена или нет эта переменная, то нужно хитрее поступить. Если у вас пыха, начиная с 7 версии, то у нас есть волшебный оператор ?? PHP: echo '<div class="vote-block'.($disable_class ?? '').'" data-id="'. get_the_ID() .'" data-total="'. $total_rec .'" data-rating="'. $rating .'">'.$richSnp.''.$ratingHTML.'</div>'; Обратите внимание на скобки, которые я добавил. https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op
Ура! mkramer, ваш вариант сработал. Большое спасибо. P.S. Пошла читать мануал --- Добавлено --- Vladimir Kheifets, ваш вариант тоже пригодиться в качестве примера, поскольку этот чертов Undefined array key постоянно вылазит при редактировании старого кода.
LeoLina Вы вначале показали фрагмент функции rating PHP: function rating($voted=true) { if($voted) { $disable_class = !!$_COOKIE["vote-post-". get_the_ID()]? ' disabled':''; } else { $disable_class = ' disabled'; } Если это функция вызывается, но потом выдаётся Undefined variable $disable_class то стоит проверить вызов этой функции и не потерян ли в ней return $disable_class.