Bricks Version: 1.5.3 (also happens on 1.5.2)
Browser: Chrome 100
OS: Linux.
URL: (a link to a page that illustrates the issue would be really helpful)
I was unable to open the page and it was throwing errors:
operator not supported for strings in /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/base.php:1718\nStack trace:\n#0 /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/button.php(150): Bricks\\Element->set_attribute('_root', 'class', 'bricks-button')\n#1 /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/base.php(2016): Bricks\\Element_Button->render()\n#2 /nas/content/live/cityverse/wp-content/themes/bricks/includes/frontend.php(390): Bricks\\Element->init()\n#3 /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/container.php(558): Bricks\\Frontend::render_element(Array)\n#4 /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/base.php(2016): Bricks\\Element_Container->render()\n#5 /nas/content/live/cityverse/wp-content/themes/bricks/includes/frontend.php(390): Bricks\\Element->init()\n#6 /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/container.php(558): Bricks\\Frontend::render_element(Array)\n#7 /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/base.php(2016): Bricks\\Element_Container->render()\n#8 /nas/content/live/cityverse/wp-content/themes/bricks/includes/frontend.php(390): Bricks\\Element->init()\n#9 /nas/content/live/cityverse/wp-content/themes/bricks/includes/frontend.php(464): Bricks\\Frontend::render_element(Array)\n#10 /nas/content/live/cityverse/wp-content/themes/bricks/includes/frontend.php(718): Bricks\\Frontend::render_data(Array)\n#11 /nas/content/live/cityverse/wp-content/themes/bricks/page.php(7): Bricks\\Frontend::render_content(Array)\n#12 /nas/content/live/cityverse/wp-includes/template-loader.php(106): include('/nas/content/li...')\n#13 /nas/content/live/cityverse/wp-blog-header.php(19): require_once('/nas/content/li...')\n#14 /nas/content/live/cityverse/index.php(17): require('/nas/content/li...')\n#15 {main}\n thrown in /nas/content/live/cityverse/wp-content/themes/bricks/includes/elements/base.php on line 1718
I fixed the bug temporarily by adding the following code:
Before:
/**
* Set HTML element attribute + value(s)
*
* @param string $key Element identifier.
* @param string $attribute Attribute to set value(s) for.
* @param string|array $value Set single value (string) or values (array).
*
* @since 1.0
*/
public function set_attribute( $key, $attribute, $value = null ) {
if ( is_array( $value ) ) {
foreach ( $value as $val ) {
$this->attributes[ $key ][ $attribute ][] = $val;
}
} else {
if ( empty( $value ) ) {
$this->attributes[ $key ][ $attribute ] = '';
} else {
$this->attributes[ $key ][ $attribute ][] = $value;
}
}
}
After
/**
* Set HTML element attribute + value(s)
*
* @param string $key Element identifier.
* @param string $attribute Attribute to set value(s) for.
* @param string|array $value Set single value (string) or values (array).
*
* @since 1.0
*/
public function set_attribute( $key, $attribute, $value = null ) {
if(!is_array($this->attributes[ $key ][ $attribute ])) {
$this->attributes[ $key ][ $attribute ] = [];
}
if ( is_array( $value ) ) {
foreach ( $value as $val ) {
$this->attributes[ $key ][ $attribute ][] = $val;
}
} else {
if ( empty( $value ) ) {
$this->attributes[ $key ][ $attribute ] = '';
} else {
$this->attributes[ $key ][ $attribute ][] = $value;
}
}
}
[Please describe in as much detail as possible how we can replicate this bug]