Adding a Custom Option Under the Row Styles
function custom_row_style_fields( $fields ) { $fields['parallax'] = array( 'name' => __( 'Parallax', 'so-widgets-test' ), 'type' => 'checkbox', 'group' => 'design', 'description' => __( 'If enabled, the background image will have a parallax effect.', 'so-widgets-test' ), 'priority' => 8, ); return $fields; } add_filter( 'siteorigin_panels_row_style_fields', 'custom_row_style_fields' );
Parameters:
name
The name of the custom option.
type
Can be set to checkbox
, text
, code
, measurement
, color
, image
and select
.
group
Can be set to design
, layout
and attributes
.
description
(Optional) A description of the custom option.
priority
The position in the group the option should appear. Priority set on default options:
Attribute Fields
- 5 - Row Class
- 6 - Cell Class
- 10 - CSS Styles
Layout Fields
- 5 - Bottom Margin
- 6 - Gutter
- 7 - Padding
- 10 - Row Layout
Design Fields
- 5 - Background Color
- 6 - Background Image
- 7 - Background Image Display
- 10 - Border Color
Adding the New Option to the Row Element
function custom_row_style_attributes( $attributes, $args ) { if ( ! empty( $args['parallax'] ) ) { array_push( $attributes['class'], 'parallax' ); } return $attributes; } add_filter( 'siteorigin_panels_row_style_attributes', 'custom_row_style_attributes', 10, 2 );
The code checks if parallax is set inside the $args
array and adds a value of 'parallax' to $attributes['class']
.
$args
array is used to check which values have been set. $attributes
array contains all the values that will display on the front-end.
To add a custom class, append the class name to $attributes['class']
.
To add a custom style (like text-align: center;), append the style to $attributes['style']
.
To add a new attribute, add both a new key and value to $attributes
. Example: $attributes['data-video-id'] = $args['video-id'];
will add data-video-id="9"
to the row element.
Note that the filter for siteorigin_panels_row_style_attributes
needs to be called after Page Builder loads. In my project I added the filter inside a function which is triggered on plugins_loaded
.
Processing Styles
Before rendering the context's styles, it's possible to access and alter the styles of the current context using filters. This allows you to migrate and alter data as needed. Changes aren't, however, stored until the user saves the page/widget. There are two filters that allow for this. siteorigin_panels_general_current_styles
, which is a general catch-all filter, and siteorigin_panels_general_current_styles_{type}
, {type}
being the currently viewed type.
Parameters
current
An array containing the current settings for the type.
post_id
The id of post being edited. This value will be empty if edited outside of Page Builder.
type
The current type. This parameter is not present if siteorigin_panels_general_current_styles_{type}
is the used filter.
args
An array containing builder arguments.
JavaScript Event: setup_style_fields
The setup_style_fields
event will allow you interact with styles, and make adjustments based on the overall Page Builder view. This can be used to help trigger JavaScript assoicated with custom fields (such as date picker) and conditionally show fields.
For example, the following JavaScript will conditionally show a field with the id of example
based on whether the toggle_example
field is ticked or not.
( function( $ ) { $( document ).on( 'setup_style_fields', function( e, view ) { var example = view.$el.find( '.so-field-example' ); view.$el.find( '.so-field-toggle_example input[type="checkbox"]' ).on( 'change', function() { // If the toggle example field is checked, show the field. $( this ).is( ':checked' ) ? exampleField.show() : exampleField.hide(); } ).trigger( 'change' ); } )( jQuery );