: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$saved_value = et_get_option( $setting_name );
if ( $saved_value && $saved_value === $string_value ) {
et_update_option( $setting_name, $string_value );
* Flush rewrite rules to fix the issue Layouts, not being visible on front-end and visual builder,
* if pretty permalinks were enabled
function et_pb_maybe_flush_rewrite_rules_library() {
// Run flush rewrite only when et_pb_layout post type registered.
if ( post_type_exists( 'et_pb_layout' ) ) {
et_builder_maybe_flush_rewrite_rules( 'et_flush_rewrite_rules_library', ET_BUILDER_PRODUCT_VERSION );
add_action( 'init', 'et_pb_maybe_flush_rewrite_rules_library', 9 );
* Remove et_builder_maybe_flush_rewrite_rules flag if flush_rewrite_rules() is called while
* `et_pb_layout` post type hasn't been registered
* @param string|array $old_value
* @param string|array $value
function et_pb_maybe_remove_flush_rewrite_rules_library_flag( $old_value, $value, $option ) {
// rewrite rules for CPT that are rebuilt by flush_rewrite_rules() are based on
// get_post_types( array( '_builtin' => false ) ) value; Hence if flush_rewrite_rules() is
// executed while `et_pb_layout` CPT hasn't been registered (usually by third party plugin)
// et_pb_maybe_flush_rewrite_rules_library() flag has to be removed to trigger flush_rewrite_rules()
// via et_pb_maybe_flush_rewrite_rules_library() which contains `et_pb_layout` rewrite rules
// because et_pb_maybe_flush_rewrite_rules_library() checks for `et_pb_layout` first.
if ( '' === $value && ! post_type_exists( 'et_pb_layout' ) ) {
et_update_option( 'et_flush_rewrite_rules_library', '' );
add_action( 'update_option_rewrite_rules', 'et_pb_maybe_remove_flush_rewrite_rules_library_flag', 10, 3 );
* Get list of shortcut available on BB and FB
* @param string (fb|bb) shortcut mode
* @return array shortcut list
if ( ! function_exists( 'et_builder_get_shortcuts' ) ) :
function et_builder_get_shortcuts( $on = 'fb' ) {
$shortcuts = apply_filters('et_builder_get_shortcuts', array(
'title' => esc_html__( 'Page Shortcuts', 'et_builder' ),
'kbd' => array( 'super', 'z' ),
'desc' => esc_html__( 'Undo', 'et_builder' ),
'kbd' => array( 'super', 'y' ),
'desc' => esc_html__( 'Redo', 'et_builder' ),
'kbd' => array( 'super', 's' ),
'desc' => esc_html__( 'Save Page', 'et_builder' ),
'save_as_draft' => array(
'kbd' => array( 'super', 'shift' , 's'),
'desc' => esc_html__( 'Save Page As Draft', 'et_builder' ),
'kbd' => array( 'super', 'e' ),
'desc' => esc_html__( 'Exit Visual Builder', 'et_builder' ),
'exit_to_backend_builder' => array(
'kbd' => array( 'super', 'shift', 'e' ),
'desc' => esc_html__( 'Exit To Backend Builder', 'et_builder' ),
'toggle_settings_bar' => array(
'desc' => esc_html__( 'Toggle Settings Bar', 'et_builder' ),
'open_page_settings' => array(
'desc' => esc_html__( 'Open Page Settings', 'et_builder' ),
'desc' => esc_html__( 'Open History Window', 'et_builder' ),
'open_portability' => array(
'desc' => esc_html__( 'Open Portability Window', 'et_builder' ),
'kbd' => array( 'super', '+' ),
'desc' => esc_html__( 'Responsive Zoom In', 'et_builder' ),
'kbd' => array( 'super', '-' ),
'desc' => esc_html__( 'Responsive Zoom Out', 'et_builder' ),
'kbd' => array( 'shift', 'w' ),
'desc' => esc_html__( 'Wireframe Mode', 'et_builder' ),
'kbd' => array( 'super', 'shift', 'c' ),
'desc' => esc_html__( 'Click Mode', 'et_builder' ),
'kbd' => array( 'super', 'shift', 'g' ),
'desc' => esc_html__( 'Grid Mode', 'et_builder' ),
'kbd' => array( 'super', 'shift', 'h' ),
'desc' => esc_html__( 'Hover Mode', 'et_builder' ),
'desc' => esc_html__( 'List All Shortcuts', 'et_builder' ),
'title' => esc_html__( 'Inline Editor Shortcuts', 'et_builder' ),
'desc' => esc_html__( 'Exit Inline Editor', 'et_builder' ),
'title' => esc_html__( 'Module Shortcuts', 'et_builder' ),
'kbd' => array( 'super', 'c' ),
'desc' => esc_html__( 'Copy Module', 'et_builder' ),
'kbd' => array( 'super', 'x' ),
'desc' => esc_html__( 'Cut Module', 'et_builder' ),
'kbd' => array( 'super', 'v' ),
'desc' => esc_html__( 'Paste Module', 'et_builder' ),
'module_copy_styles' => array(
'kbd' => array( 'super', 'alt', 'c' ),
'desc' => esc_html__( 'Copy Module Styles', 'et_builder' ),
'module_paste_styles' => array(
'kbd' => array( 'super', 'alt', 'v' ),
'desc' => esc_html__( 'Paste Module Styles', 'et_builder' ),
'module_reset_styles' => array(
'kbd' => array( 'super', 'alt', 'r' ),
'desc' => esc_html__( 'Reset Module Styles', 'et_builder' ),
'kbd' => array( 'super', 'shift', 'l' ),
'desc' => esc_html__( 'Lock Module', 'et_builder' ),
'module_disable' => array(
'kbd' => array( 'super', 'shift', 'd' ),
'desc' => esc_html__( 'Disable Module', 'et_builder' ),
'drag_auto_copy' => array(
'kbd' => array( 'alt', 'module move' ),
'desc' => esc_html__( 'Move and copy module into dropped location', 'et_builder' ),
'column_change_structure' => array(
'kbd' => array( 'c', array( '1', '2', '3', '4', '5', '...' ) ),
'desc' => esc_html__( 'Change Column Structure', 'et_builder' ),
'row_make_fullwidth' => array(
'kbd' => array( 'r', 'f' ),
'desc' => esc_html__( 'Make Row Fullwidth', 'et_builder' ),
'row_edit_gutter' => array(
'kbd' => array( 'g', array( '1', '2', '3', '4' ) ),
'desc' => esc_html__( 'Change Gutter Width', 'et_builder' ),
'kbd' => array( 'r', array( '1', '2', '3', '4', '5', '...') ),
'desc' => esc_html__( 'Add New Row', 'et_builder' ),
'add_new_section' => array(
'kbd' => array( 's', array( '1', '2', '3' ) ),
'desc' => esc_html__( 'Add New Section', 'et_builder' ),
'resize_padding_auto_opposite' => array(
'kbd' => array( 'shift', 'Drag Padding' ),
'desc' => esc_html__( 'Restrict padding to 10px increments', 'et_builder' ),
'resize_padding_limited' => array(
'kbd' => array( 'alt', 'Drag Padding' ),
'desc' => esc_html__( 'Padding limited to opposing value', 'et_builder' ),
'resize_padding_10' => array(
'kbd' => array( 'shift', 'alt', 'Drag Padding' ),
'desc' => esc_html__( 'Mirror padding on both sides', 'et_builder' ),
'increase_padding_row' => array(
'kbd' => array( 'r', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Increase Row Padding', 'et_builder' ),
'decrease_padding_row' => array(
'kbd' => array( 'r', 'alt', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Decrease Row Padding', 'et_builder' ),
'increase_padding_section' => array(
'kbd' => array( 's', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Increase Section Padding', 'et_builder' ),
'decrease_padding_section' => array(
'kbd' => array( 's', 'alt', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Decrease Section Padding', 'et_builder' ),
'increase_padding_module' => array(
'kbd' => array( 'm', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Increase Module Padding', 'et_builder' ),
'decrease_padding_module' => array(
'kbd' => array( 'm', 'alt', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Decrease Module Padding', 'et_builder' ),
'increase_padding_row_10' => array(
'kbd' => array( 'r', 'shift', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Increase Row Padding By 10px', 'et_builder' ),
'decrease_padding_row_10' => array(
'kbd' => array( 'r', 'alt', 'shift', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Decrease Row Padding By 10px', 'et_builder' ),
'increase_padding_section_10' => array(
'kbd' => array( 's', 'shift', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Increase Section Padding By 10px', 'et_builder' ),
'decrease_padding_section_10' => array(
'kbd' => array( 's', 'alt', 'shift', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Decrease Section Padding By 10px', 'et_builder' ),
'increase_padding_module_10' => array(
'kbd' => array( 'm', 'shift', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Increase Module Padding By 10px', 'et_builder' ),
'decrease_padding_module_10' => array(
'kbd' => array( 'm', 'alt', 'shift', array( 'left', 'right', 'up', 'down' ) ),
'desc' => esc_html__( 'Decrease Module Padding By 10px', 'et_builder' ),
'title' => esc_html__( 'Modal Shortcuts', 'et_builder' ),
'desc' => esc_html__( 'Close Modal', 'et_builder' ),
'kbd' => array( 'enter' ),
'desc' => esc_html__( 'Save Changes', 'et_builder' ),
'kbd' => array( 'super', 'z' ),
'desc' => esc_html__( 'Undo', 'et_builder' ),
'kbd' => array( 'super', 'shift', 'z' ),
'desc' => esc_html__( 'Redo', 'et_builder' ),
'kbd' => array( 'shift', 'tab' ),
'desc' => esc_html__( 'Switch Tabs', 'et_builder' ),
'toggle_expand' => array(
'kbd' => array( 'super', 'enter' ),
'desc' => esc_html__( 'Expand Modal Fullscreen', 'et_builder' ),
'kbd' => array( 'super', array( 'left', 'right' ) ),
'desc' => esc_html__( 'Snap Modal Left / Right', 'et_builder' ),
'quick_actions' => array(
'kbd' => array( 'shift', 'space' ),
'desc' => esc_html__( 'Quick Actions', 'et_builder' ),
'kbd' => array( 'super', 'l' ),
'desc' => esc_html__( 'Layers View', 'et_builder' ),