AdminCustomizationBase.php
2 years ago
AdminCustomizationFactory.php
2 years ago
AdminMenuItems.php
4 years ago
AdminMenuSanitization.php
2 years ago
AdminMenuSanitization.php
32 lines
| 1 | <?php |
| 2 | namespace NestedPages\Entities\AdminCustomization; |
| 3 | |
| 4 | /** |
| 5 | * Sanitizes the custom admin menu options before saving |
| 6 | */ |
| 7 | class AdminMenuSanitization |
| 8 | { |
| 9 | public function __construct() |
| 10 | { |
| 11 | add_filter('pre_update_option_nestedpages_admin', [$this, 'sanitizeOption'], 1, 3); |
| 12 | } |
| 13 | |
| 14 | public function sanitizeOption($value, $old_value, $option) |
| 15 | { |
| 16 | if ( !isset($value['enabled_menu']) || $value['enabled_menu'] !== 'true') return $value; |
| 17 | if ( !isset($value['nav_menu_options']) || empty($value['nav_menu_options'])) return $value; |
| 18 | // We can't use map_deep, because it strips out core WP span tags necessary |
| 19 | foreach ( $value['nav_menu_options'] as $role => $pages ) : |
| 20 | foreach ( $pages as $page_id => $page_options ) : |
| 21 | |
| 22 | // Icon |
| 23 | if ( isset($page_options['icon']) && $page_options['icon'] !== '' ) $value['nav_menu_options'][$role][$page_id]['icon'] = sanitize_text_field($page_options['icon']); |
| 24 | |
| 25 | // Label |
| 26 | if ( isset($page_options['label']) && $page_options['label'] !== '' ) $value['nav_menu_options'][$role][$page_id]['label'] = sanitize_text_field($page_options['label']); |
| 27 | |
| 28 | endforeach; |
| 29 | endforeach; |
| 30 | return $value; |
| 31 | } |
| 32 | } |