Как вылечить ошибку php "Недопустимое смещение строки" в не поддерживаемом плагине WordPress

Я не программист php, так что для меня это так же ясно, как грязь.

Плагин Wordpress - WP Custom Search Версия: 0.3.26 Похоже, что это единственный удаленно используемый плагин, который позволит мне создать форму поиска в нескольких полях для боковой панели сайта. Это работает достаточно хорошо на моей установке WAMP на офисном ПК, но выдает ошибку ниже, когда я перенес ее на хостинг клиента на GoDaddy VPS.

Warning: Illegal string offset 'preset' in /home/clubfund/public_html/wp-content/plugins/wp-custom-fields-search/wp-custom-fields-search.php on line 401

Ошибка появляется для ссылки на этот раздел кода php.

function process_shortcode($atts,$content){
            return $this->generate_from_tag(array("",$atts['preset']));
        }

Большинство ответов на подобные вопросы относятся к путанице между значениями строк и массивов. Я не знаю, с чего начать, несмотря на то, что прочитал много похожих вопросов и решений. К сожалению, создатель плагина не может отвечать на вопросы. Я задавался вопросом, будет ли кто-нибудь здесь готов помочь. Спасибо заранее.

2 ответа

Вероятно, у вас разные уровни ошибок при производстве и разработке. Проблема, вероятно, также возникает локально, вы просто не видите ее регистрации. В любом случае, проблема в том, что ключ массива preset не существует в $atts массив.

Чтобы исправить это, вы можете сделать это прямо над обратной линией -

if(!array_key_exists($atts, "preset"))
{
  $atts["preset"] = "";
}

Это установит значение в пустую строку, если оно еще не установлено.

Если вы не уверены, что на самом деле передается, вы можете сделать что-то вроде var_dump($atts) или же gettype($atts) чтобы увидеть, является ли тип даже массивом.

Не помещайте шорткод в свой шаблон, вставьте длинный код:

<?php if(function_exists('wp_custom_fields_search')) 
    wp_custom_fields_search(); ?>

У меня тоже была такая же проблема, и уже это решило ее.

Другие вопросы по тегам