【问题标题】:Error in cookie law info plugin for WordpressWordpress 的 cookie 法律信息插件错误
【发布时间】:2016-07-21 16:50:54
【问题描述】:

我的一个插件有问题。

日志文件说:

PHP 警告:stripslashes() 期望参数 1 是字符串,数组在 /mnt/web008/c1/24/57250724/htdocs/WordPress_01/wp-content/plugins/cookie-law-info/php/shortcodes 中给出。第125行的php

看起来给定了一个数组,但需要一个字符串?我不知道我该如何解决这个问题。

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

【问题讨论】:

  • 因为 $setting 是一个数组,所以 stripslashes 会报错。

标签: javascript php jquery wordpress cookies


【解决方案1】:

嗯,错误本身是不言自明的。

函数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 函数包装对 stripslashes_deep 函数的调用,以将其转换为字符串。

implode(stripslashes_deep($settings))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多