Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Ошибка: Illegal string offset 'class' in?

Всем привет!
При выполнение шорткода на WP, возникает ошибка 'Warning: Illegal string offset 'class' in...'. Я догадываюсь, что ошибка состоит в том, что нет такого элемента массива, как $atts['class'] ?

Пробовал делать условия, и разные другие приемы на проверку содержимого массива, но ошибка так и не пропала, и поэтому вопрос: разве, если содержимого массива нет, не должно-ли выводить пустоту?

Помогите решить проблему!
Спасибо!

function div_container($atts, $content = null) {

    $output = '<div class="container ' . $atts['class'] . '">' . $content . '</div>';

    return do_shortcode($output);

}
// Warning: Illegal string offset 'class' in...
  • Вопрос задан
  • 1135 просмотров
Решения вопроса 1
@neatek
разве, если содержимого массива нет, не должно-ли выводить пустоту?

так оно так и выводит, только в добавок выводит Warning, не Error.

function div_container($atts = array(), $content = '') {
    $output = '<div class="container">'.$content.'</div>'; // вывод шорткода без класса
    if(isset($atts['class'])) // существует или нет?!
        $output = '<div class="container '.$atts['class'].'">' .$content.'</div>'; // опа, ура! класс есть

    return do_shortcode($output);
}


Возможно в некоторых shortcode(шорткодах) не указан атрибут стиля [shortcode class="blahblah"]

не копируйте код, попробуйте вдуматься и написать его сами, прогуглив, или читая php.su сайт
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TrogWarZ
@TrogWarZ
web developer
Судя по названию функций и переменных, подразумевалось что $atts будет массивом?
В функцию в качестве $atts приходит строка, а после пытаетесь работать с ней как с массивом – отсюда и предупреждение.
Найдите место, где вызывается div_container и в качестве первого аргумента передаётся строка – баг там.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы