Wordpress的cookie法律信息插件出错

时间:2016-07-21 08:30:17

标签: javascript php jquery wordpress cookies

我的一个插件出了问题。

日志文件说:

  

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>';
}

1 个答案:

答案 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))