$details) {
if($details['value']) {
//display meta box if at least one value is set
add_meta_box('perfmatters', 'Perfmatters', array('Perfmatters\Meta', 'load_meta_box'), get_post_types(array('public' => true)), 'side', 'high');
break;
}
}
}
//display meta box
public static function load_meta_box() {
global $post;
//noncename needed to verify where the data originated
echo ' ';
//print inputs
foreach(self::$meta_options as $id => $details) {
//existing meta value
$meta = get_post_meta($post->ID, 'perfmatters_exclude_' . $id, true);
//individual input
echo '
';
echo '
' . __('Clear Used CSS', 'perfmatters') . ' ';
echo '
';
echo '
';
echo wp_nonce_field('perfmatters_clear_post_used_css', 'perfmatters_clear_post_used_css', false, false);
echo '
';
echo '';
}
}
//save meta box data
public static function save_meta($post_id, $post) {
//verify this came from the our screen and with proper authorization, because save_post can be triggered at other times
if(empty($_POST['perfmatters_meta_noncename']) || !wp_verify_nonce($_POST['perfmatters_meta_noncename'], plugin_basename(__FILE__))) {
return;
}
//dont save for revisions
if($post->post_type == 'revision') {
return;
}
//saved data
$perfmatters_meta = array();
foreach(self::$meta_options as $id => $details) {
$key = 'perfmatters_exclude_' . $id;
if(!empty($_POST[$key]) || get_post_meta($post->ID, $key, true) != false) {
//update option in post meta
update_post_meta($post->ID, $key, $_POST[$key] ?? "");
}
}
}
//populate meta options array for other functions
private static function get_meta_options() {
self::$meta_options = array(
'defer_js' => array(
'name' => __('Defer JavaScript', 'perfmatters'),
'value' => !empty(Config::$options['assets']['defer_js'])
),
'delay_js' => array(
'name' => __('Delay JavaScript', 'perfmatters'),
'value' => !empty(Config::$options['assets']['delay_js'])
),
'unused_css' => array(
'name' => __('Unused CSS', 'perfmatters'),
'value' => !empty(Config::$options['assets']['remove_unused_css'])
),
'lazy_loading' => array(
'name' => __('Lazy Loading', 'perfmatters'),
'value' => !empty(Config::$options['lazyload']['lazy_loading']) || !empty(Config::$options['lazyload']['lazy_loading_iframes'])
),
'instant_page' => array(
'name' => __('Instant Page', 'perfmatters'),
'value' => !empty(Config::$options['preload']['instant_page'])
)
);
}
}