Warning: Illegal string offset 'size'

344
28 апреля 2017, 21:13

Здравствуйте, помогите разобраться, пожалуйста, на страницах почти везде данное сообщение. Warning: Illegal string offset 'size' in "/home/...lib/required/customization.php on line 924 вот часть кода строки, где возникает ошибка

    	if(!$atts['size']) 
    		$atts['size'] = 'thumbnail';

Полностью Код 
 
// 5: Post Thumbnail Plugin *****/ 
 
function post_thumbnail_shortcode($atts, $content='') { 
	if(!function_exists('post_thumbnail_shortcode')) 
		return; 
 
	if(!$atts['size']) 
		$atts['size'] = 'thumbnail'; 
 
	return '<figure class="post_thumbnail th '.$atts['class'].'">'.get_the_post_thumbnail(null, 'img_full').'</figure>'; 
} 
 
function post_thumbnail($str){ 
	$args = wp_parse_args($str); 
	echo post_thumbnail_shortcode($args); 
} 
 
add_shortcode('post_thumbnail', 'post_thumbnail_shortcode');

Answer 1
  1. Это происходит из-за того что $atts это строка а не массив.
  2. Судя по коду $atts['size'] у вас дальше нигде не используется. По идее он должен быть передан в функцию get_the_post_thumbnail(null, $atts['size'])
  3. По хорошему вам нужно понять что приходит в функцию в этом случае и почему.

Предположу что такое приходит по причине того что вы создаете пустой шорткат. Например: [post_thumbnail]

Функцию можно переписать вот так:

function post_thumbnail_shortcode($atts, $content = '') {
    $extra_class = '';
    $size = 'thumbnail';
    if (is_array($atts)) {
        if (isset($atts['size'])) {
            if ($current_size = trim($atts['size'])) {
                $size = $current_size;
            }
        }
        if (isset($atts['class']))) {
            if ($current_class = trim($atts['class'])) {
                $extra_class = $current_class;
            }
        }
    }
    return '<figure class="post_thumbnail th'.$extra_class.'">'.get_the_post_thumbnail(null, $size).'</figure>';
}

Теперь шорткат без свойств получит поведение по умолчанию, но мы так же можем задать ему поведение [post_thumbnail size=img_full class=bordered]

Вот статья про то как работают шорт-коды

READ ALSO
Путь к файлам на локальном сервере

Путь к файлам на локальном сервере

При разработке приходится много тестировать и на локальном и на удалённом сервере, а пути к файлам и папкам различные на этих серверахДопустим...

358
Дублирование данных при переборе foreach

Дублирование данных при переборе foreach

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

244
Как вытащить данные из базы

Как вытащить данные из базы

Ребят есть вот база, и в нем таблица ocmc_t_item, как мне вытащить из этой таблицы количество записей: за последнее неделю, за последний месяц и общее...

225
Как закрыть тег в PHP

Как закрыть тег в PHP

В содержании на лету добавляется тег HTML code:

313