Usage
This function runs automatically, so it is not called manually. Is this incorrect?
Source File
Located in /libs/Functions.php on line 325.
3 Hooks
Find these filters and actions in the source code below to hook into them. Use do_action() and add_filter() in your functions file or plugin.
Filters
"pre_nebula_manifest_json""nebula_manifest_shortcuts"
Need a new filter hook? Request one here.
Actions
"qm/info"Need a new action hook? Request one here.
PHP
public function manifest_json(){ $timer_name = $this->timer('Write Manifest JSON', 'start', 'Manifest'); $override = apply_filters('pre_nebula_manifest_json', null); if ( isset($override) ){return;} $manifest_json = '{ "name": "' . get_bloginfo('name') . ': ' . get_bloginfo('description') . '", "short_name": "' . get_bloginfo('name') . '", "description": "' . get_bloginfo('description') . '", "theme_color": "' . get_theme_mod('nebula_primary_color', $this->get_color('$primary_color')) . '", "background_color": "' . get_theme_mod('nebula_background_color', $this->get_color('$background_color')) . '", "gcm_sender_id": "' . $this->get_option('gcm_sender_id') . '", "scope": "/", "start_url": "' . home_url('/') . '?utm_source=pwa", "display": "standalone", "orientation": "portrait",'; $shortcuts = apply_filters('nebula_manifest_shortcuts', array()); //Allow the child theme (or plugins) to add shortcuts to the PWA if ( !empty($shortcuts) ){ $manifest_json .= '"shortcuts": ' . wp_json_encode($shortcuts, JSON_PRETTY_PRINT) . ','; } $manifest_json .= '"icons": ['; if ( has_site_icon() ){ $manifest_json .= '{ "src": "' . get_site_icon_url(16, get_theme_file_uri('/assets/img/meta') . '/favicon-16x16.png') . '", "sizes": "16x16", "type": "image/png" }, { "src": "' . get_site_icon_url(32, get_theme_file_uri('/assets/img/meta') . '/favicon-32x32.png') . '", "sizes": "32x32", "type": "image/png" }, { "src": "' . get_site_icon_url(192, get_theme_file_uri('/assets/img/meta') . '/android-chrome-192x192.png') . '", "sizes": "192x192", "type": "image/png", "purpose": "any maskable" }, { "src": "' . get_site_icon_url(512, get_theme_file_uri('/assets/img/meta') . '/android-chrome-512x512.png') . '", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" }'; } else { //Loop through all meta images $files = glob(get_theme_file_path('/assets/img/meta') . '/*.png'); foreach ( $files as $file ){ $filename = $this->url_components('filename', $file); $dimensions = getimagesize($file); //Considering adding an @ to ignore notices when getimagesize fails if ( !empty($dimensions) ){ $manifest_json .= '{ "src": "' . get_theme_file_uri('/assets/img/meta') . '/' . $filename . '", "sizes": "' . $dimensions[0] . 'x' . $dimensions[1] . '", "type": "image/png", "purpose": "any maskable" }, '; } } } $manifest_json = rtrim($manifest_json, ', ') . ']}'; WP_Filesystem(); global $wp_filesystem; $wp_filesystem->put_contents($this->manifest_json_location(false), $manifest_json); do_action('qm/info', 'Updated manifest.json File'); $this->timer($timer_name, 'end'); }
Override
To override this PHP function, use this hook in your child theme or plugin ("my_custom" can be changed):
PHP
add_filter('pre_nebula_manifest_json', 'my_custom_manifest_json'); function my_custom_manifest_json(){ //Write your own code here return true; //Return true to prevent the original function from running afterwords }
You can completely disable this PHP function with a single line actions:
PHP
add_filter('pre_nebula_manifest_json', '__return_false');