2016-07-21 2 views
0

У меня проблема с одним из моих плагинов.Ошибка в файле информации о файлах cookie для Wordpress

Файлы журнала сказал:

PHP Предупреждение: stripslashes() ожидает параметр 1, чтобы быть строка, массив приведены в/мнт/web008/c1/24/57250724/HTDOCS/WordPress_01/WP-содержание/плагины/файл cookie-law-info/php/shortcodes.php в строке 125

Похоже, что имеется заданный параметр, но ожидается строка? Я не знаю, как я могу это исправить.

/** Returns HTML for a standard (green, medium sized) 'Accept' button */ 
function cookielawinfo_shortcode_accept_button($atts) { 
    extract(shortcode_atts(array(
     'colour' => 'green' 
    ), $atts)); 

    // Fixing button translate text bug 
    // 18/05/2015 by RA 
    $defaults = array(
     'button_1_text' => '' 
    ); 
    $settings = wp_parse_args(cookielawinfo_get_admin_settings(), $defaults); 

    /*This is line 125:*/ return '<a href="#" id="cookie_action_close_header" class="medium cli-plugin-button">' . stripslashes($settings) . '</a>'; 
} 
+0

Потому что $ setting - массив, поэтому stripslashes дает ошибку. –

ответ

0

Ну, сама ошибка говорит само за себя.

Функция stripslashes ожидает, что ее параметром является строка. Быстрый просмотр документации Wordpress предполагает, что возвращаемое значение wp_parse_args представляет собой массив, то есть переменная $settings представляет собой массив, не являющийся строкой, и поэтому передача его в качестве аргумента в stripslashes вызывает вашу ошибку.

Вы можете использовать stripslashes на массиве, однако для этого требуется немного больше работы. Вот пример, приведенный в документации PHP.

<?php 
function stripslashes_deep($value) { 
    $value = is_array($value) ? 
       array_map('stripslashes_deep', $value) : 
       stripslashes($value); 

    return $value; 
} 

// Example 
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")); 
$array = stripslashes_deep($array); 

// Output 
print_r($array); 
?> 

https://developer.wordpress.org/reference/functions/wp_parse_args/ http://php.net/manual/en/function.stripslashes.php

EDIT: Это, вероятно, стоит отметить, что stripslashes_deep возвращает массив. Если это не нужный вывод, заверните вызов функции stripslashes_deep с помощью функции implode, чтобы преобразовать ее в строку.

implode(stripslashes_deep($settings)) 
Смежные вопросы