$svg) {
// Sanitize the name and path for each SVG
if (isset($svg['name'])) {
$input[$key]['name'] = sanitize_text_field($svg['name']);
}
if (isset($svg['path'])) {
$input[$key]['path'] = sanitize_textarea_field($svg['path']);
}
}
}
return $input;
}
// Existing function to render the theme settings page
// Callback function to render the meta box
function render_key_points_meta_box($post) {
// Retrieve the stored key points (serialized data)
$key_points_serialized = get_post_meta($post->ID, '_key_points', true);
$key_points = !empty($key_points_serialized) ? unserialize($key_points_serialized) : [];
?>
prefix . 'lcp_icons'; // Table name with WordPress prefix
// Create the table if it does not exist
$sql = "
CREATE TABLE IF NOT EXISTS $table_name (
id INT(11) NOT NULL AUTO_INCREMENT,
set_name VARCHAR(255) NOT NULL,
set_family VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
paths LONGTEXT NOT NULL,
viewbox VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
// Step 4: Insert data into the database
foreach ($data as $iconSet) {
// Extract values for the set_name and set_family from the top-level object
$setName = sanitize_text_field($iconSet['name']);
$setFamily = sanitize_text_field($iconSet['family']);
// Insert each SVG in the 'svgs' array
if (isset($iconSet['svgs']) && is_array($iconSet['svgs'])) {
foreach ($iconSet['svgs'] as $svg) {
$name = sanitize_text_field($svg['name']);
// Unescape the paths field (HTML entities or Unicode escapes)
$paths = html_entity_decode($svg['paths']); // Decode HTML entities (like " or &)
$paths = stripslashes($paths); // Remove any additional escaping, such as slashes
$viewbox = sanitize_text_field($svg['viewBox']);
// Prepare the data for insertion
$data = array(
'set_name' => $setName,
'set_family' => $setFamily,
'name' => $name,
'paths' => $paths,
'viewbox' => $viewbox,
);
// Insert into the database
$wpdb->insert($table_name, $data);
}
}
}
}
// Hook the function to the theme activation process
// Register the function to run after the theme is switched
add_action('after_switch_theme', 'load_material_icons_into_db');
// Function to drop the lcp_icons table when the theme is deactivated
function drop_lcp_icons_table() {
global $wpdb;
// Table name with WordPress prefix
$table_name = $wpdb->prefix . 'lcp_icons';
// SQL query to drop the table
$sql = "DROP TABLE IF EXISTS $table_name;";
// Execute the query
$wpdb->query($sql);
}
// Hook the function to the theme deactivation process
// Register the function to run when the theme is switched (deactivated)
add_action('switch_theme', 'drop_lcp_icons_table');