[ 'title' => _x('Mountains', 'Shapes'), 'has_flip' => true, ], 'drops' => [ 'title' => _x('Drops', 'Shapes'), 'has_negative' => true, 'has_flip' => true, 'height_only' => true, ], 'clouds' => [ 'title' => _x('Clouds', 'Shapes'), 'has_negative' => true, 'has_flip' => true, 'height_only' => true, ], 'zigzag' => [ 'title' => _x('Zigzag', 'Shapes'), ], 'pyramids' => [ 'title' => _x('Pyramids', 'Shapes'), 'has_negative' => true, 'has_flip' => true, ], 'triangle' => [ 'title' => _x('Triangle', 'Shapes'), 'has_negative' => true, ], 'triangle-asymmetrical' => [ 'title' => _x('Triangle Asymmetrical', 'Shapes'), 'has_negative' => true, 'has_flip' => true, ], 'tilt' => [ 'title' => _x('Tilt', 'Shapes'), 'has_flip' => true, 'height_only' => true, ], 'opacity-tilt' => [ 'title' => _x('Tilt Opacity', 'Shapes'), 'has_flip' => true, ], 'opacity-fan' => [ 'title' => _x('Fan Opacity', 'Shapes'), ], 'curve' => [ 'title' => _x('Curve', 'Shapes'), 'has_negative' => true, ], 'curve-asymmetrical' => [ 'title' => _x('Curve Asymmetrical', 'Shapes'), 'has_negative' => true, 'has_flip' => true, ], 'waves' => [ 'title' => _x('Waves', 'Shapes'), 'has_negative' => true, 'has_flip' => true, ], 'wave-brush' => [ 'title' => _x('Waves Brush', 'Shapes'), 'has_flip' => true, ], 'waves-pattern' => [ 'title' => _x('Waves Pattern', 'Shapes'), 'has_flip' => true, ], 'arrow' => [ 'title' => _x('Arrow', 'Shapes'), 'has_negative' => true, ], 'split' => [ 'title' => _x('Split', 'Shapes'), 'has_negative' => true, ], 'book' => [ 'title' => _x('Book', 'Shapes'), 'has_negative' => true, ], ]; self::$shapes = array_merge($native_shapes, self::getAdditionalShapes()); } /** * Get Additional Shapes * * Used to add custom shapes to elementor. * * @since 2.5.0 * * @return array */ private static function getAdditionalShapes() { static $additional_shapes = null; if (null !== $additional_shapes) { return $additional_shapes; } $additional_shapes = []; /* * Additional shapes. * * Filters the shapes used by Elementor to add additional shapes. * * @since 2.0.1 * * @param array $additional_shapes Additional Elementor shapes */ $additional_shapes = apply_filters('elementor/shapes/additional_shapes', $additional_shapes); return $additional_shapes; } /** * Get Additional Shapes For Config * * Used to set additional shape paths for editor * * @since 2.5.0 * * @return array|bool */ public static function getAdditionalShapesForConfig() { $additional_shapes = self::getAdditionalShapes(); if (empty($additional_shapes)) { return false; } $additional_shapes_config = []; foreach ($additional_shapes as $shape_name => $shape_settings) { if (!isset($shape_settings['url'])) { continue; } $additional_shapes_config[$shape_name] = $shape_settings['url']; } if (empty($additional_shapes_config)) { return false; } return $additional_shapes_config; } }