我的一个插件出了问题。
日志文件说:
PHP警告:stripslashes()期望参数1为字符串,数组在/ mnt / web008 / c1 / 24/57250724 / htdocs / WordPress_01 / wp-content / plugins / cookie-law-info / php / shortcodes中给出。第125行的PHP
看起来有一个给出的aray但是预期会有一个字符串?我不知道如何解决这个问题。
/** 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 :(得分: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
编辑:值得注意的是stripslashes_deep
将返回一个数组。如果这不是所需的输出,则通过implode函数将striplashes_deep函数包装起来,将其转换为字符串。
implode(stripslashes_deep($settings))