我正在使用一个名为King composer for pagepress的页面构建器,我正在尝试构建一些自定义函数,就像预期的一样。
我的问题是,内置的背景颜色选择器是base64编码背景属性,所以我需要解码它 - 但首先我需要解码' my-css' json,这样我就可以访问不同的属性。
这是我从建造者那里得到的回报。
array (
'_id' => '69391',
'image' => '294,9,16',
'gallery-text' => 'Dette er nærmest et galleri',
'my-css' => '{
`kc-css`:{
`any`:{
`typography`{`color|`:`#ffffff`},
`background`{`background|`:`longBase64StringHere`},
`box`:{`margin|`:`100px inherit inherit inherit`}
}
}
}',
)
到目前为止,我已尝试过:
$decodedBackground = base64_decode($atts['my-css']);
返回null
然后我尝试了: $decodedJson = json_decode($atts['my-css']);
返回:null
还尝试了其他一些可怕的错误
我不太了解它,我可以很好地访问其他属性,因为它只是数组的一部分,但CSS部分,我无法理解。我想我需要深入研究 - 但我无法让它发挥作用。
现在已经停留了大约1.5小时,所以任何帮助或指示都会受到赞赏
/ ------编辑----- /
所以这就是我试图在之后检查解码的json的方式 - 可能很重要。
$decodedJson = json_decode($atts['my-css'], true);
echo '<pre>' . var_export($decodedJson, true) . '</pre>';
答案 0 :(得分:2)
这可能不是最佳方法,因为kc-css
中的JSON格式不正确,但此代码适用于您的情况:
// Refomating JSON
$atts['my-css'] = str_replace('`{', '`:{', $atts['my-css']);
$atts['my-css'] = str_replace('`', '"', $atts['my-css']);
$json = json_decode($atts['my-css'], true);