r', 'help' => $exclude_user_agent_beacon, 'page' => 'advanced_cache', ], 'cache_purge_pages_section' => [ 'title' => __( 'Always Purge URL(s)', 'rocket' ), 'type' => 'fields_container', 'help' => $always_purge_beacon, 'page' => 'advanced_cache', ], 'cache_query_strings_section' => [ 'title' => __( 'Cache Query String(s)', 'rocket' ), 'type' => 'fields_container', // translators: %1$s = opening tag, %2$s = closing tag. 'description' => sprintf( __( '%1$sCache for query strings%2$s enables you to force caching for specific GET parameters.', 'rocket' ), '', '' ), 'help' => $cache_query_strings_beacon, 'page' => 'advanced_cache', ], ] ); $this->settings->add_settings_fields( [ 'cache_reject_uri' => [ 'type' => 'textarea', 'description' => __( 'Specify URLs of pages or posts that should never be cached (one per line)', 'rocket' ), 'helper' => __( 'The domain part of the URL will be stripped automatically.
Use (.*) wildcards to address multiple URLs under a given path.', 'rocket' ), 'placeholder' => '/example/(.*)', 'section' => 'cache_reject_uri_section', 'page' => 'advanced_cache', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], 'cache_reject_cookies' => [ 'type' => 'textarea', 'description' => __( 'Specify full or partial IDs of cookies that, when set in the visitor\'s browser, should prevent a page from getting cached (one per line)', 'rocket' ), 'section' => 'cache_reject_cookies_section', 'page' => 'advanced_cache', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], 'cache_reject_ua' => [ 'type' => 'textarea', 'description' => __( 'Specify user agent strings that should never see cached pages (one per line)', 'rocket' ), 'helper' => __( 'Use (.*) wildcards to detect parts of UA strings.', 'rocket' ), 'placeholder' => '(.*)Mobile(.*)Safari(.*)', 'section' => 'cache_reject_ua_section', 'page' => 'advanced_cache', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], 'cache_purge_pages' => [ 'type' => 'textarea', 'description' => __( 'Specify URLs you always want purged from cache whenever you update any post or page (one per line)', 'rocket' ), 'helper' => __( 'The domain part of the URL will be stripped automatically.
Use (.*) wildcards to address multiple URLs under a given path.', 'rocket' ), 'section' => 'cache_purge_pages_section', 'page' => 'advanced_cache', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], 'cache_query_strings' => [ 'type' => 'textarea', 'description' => __( 'Specify query strings for caching (one per line)', 'rocket' ), 'section' => 'cache_query_strings_section', 'page' => 'advanced_cache', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], ] ); } /** * Registers Database section. * * @since 3.0 */ private function database_section() { $total = []; foreach ( array_keys( $this->optimize->get_options() ) as $key ) { $total[ $key ] = $this->optimize->count_cleanup_items( $key ); } $this->settings->add_page_section( 'database', [ 'title' => __( 'Database', 'rocket' ), 'menu_description' => __( 'Optimize, reduce bloat', 'rocket' ), ] ); $this->settings->add_settings_sections( [ 'post_cleanup_section' => [ 'title' => __( 'Post Cleanup', 'rocket' ), 'type' => 'fields_container', 'description' => __( 'Post revisions and drafts will be permanently deleted. Do not use this option if you need to retain revisions or drafts.', 'rocket' ), 'help' => $this->beacon->get_suggest( 'db_optimization' ), 'page' => 'database', ], 'comments_cleanup_section' => [ 'title' => __( 'Comments Cleanup', 'rocket' ), 'type' => 'fields_container', 'description' => __( 'Spam and trashed comments will be permanently deleted.', 'rocket' ), 'page' => 'database', ], 'transients_cleanup_section' => [ 'title' => __( 'Transients Cleanup', 'rocket' ), 'type' => 'fields_container', 'description' => __( 'Transients are temporary options; they are safe to remove. They will be automatically regenerated as your plugins require them.', 'rocket' ), 'page' => 'database', ], 'database_cleanup_section' => [ 'title' => __( 'Database Cleanup', 'rocket' ), 'type' => 'fields_container', 'description' => __( 'Reduces overhead of database tables', 'rocket' ), 'page' => 'database', ], 'schedule_cleanup_section' => [ 'title' => __( 'Automatic cleanup', 'rocket' ), 'type' => 'fields_container', 'page' => 'database', ], ] ); $this->settings->add_settings_fields( [ 'database_revisions' => [ 'type' => 'checkbox', 'label' => __( 'Revisions', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s revision in your database.', '%s revisions in your database.', $total['database_revisions'], 'rocket' ), number_format_i18n( $total['database_revisions'] ) ), 'section' => 'post_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'database_auto_drafts' => [ 'type' => 'checkbox', 'label' => __( 'Auto Drafts', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s draft in your database.', '%s drafts in your database.', $total['database_auto_drafts'], 'rocket' ), number_format_i18n( $total['database_auto_drafts'] ) ), 'section' => 'post_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'database_trashed_posts' => [ 'type' => 'checkbox', 'label' => __( 'Trashed Posts', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s trashed post in your database.', '%s trashed posts in your database.', $total['database_trashed_posts'], 'rocket' ), $total['database_trashed_posts'] ), 'section' => 'post_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'database_spam_comments' => [ 'type' => 'checkbox', 'label' => __( 'Spam Comments', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s spam comment in your database.', '%s spam comments in your database.', $total['database_spam_comments'], 'rocket' ), number_format_i18n( $total['database_spam_comments'] ) ), 'section' => 'comments_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'database_trashed_comments' => [ 'type' => 'checkbox', 'label' => __( 'Trashed Comments', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s trashed comment in your database.', '%s trashed comments in your database.', $total['database_trashed_comments'], 'rocket' ), number_format_i18n( $total['database_trashed_comments'] ) ), 'section' => 'comments_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'database_expired_transients' => [ 'type' => 'checkbox', 'label' => __( 'Expired transients', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s expired transient in your database.', '%s expired transients in your database.', $total['database_expired_transients'], 'rocket' ), number_format_i18n( $total['database_expired_transients'] ) ), 'section' => 'transients_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'database_all_transients' => [ 'type' => 'checkbox', 'label' => __( 'All transients', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s transient in your database.', '%s transients in your database.', $total['database_all_transients'], 'rocket' ), number_format_i18n( $total['database_all_transients'] ) ), 'section' => 'transients_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'database_optimize_tables' => [ 'type' => 'checkbox', 'label' => __( 'Optimize Tables', 'rocket' ), // translators: %s is the number of revisions found in the database. It's a formatted number, don't use %d. 'description' => sprintf( _n( '%s table to optimize in your database.', '%s tables to optimize in your database.', $total['database_optimize_tables'], 'rocket' ), number_format_i18n( $total['database_optimize_tables'] ) ), 'section' => 'database_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'schedule_automatic_cleanup' => [ 'container_class' => [ 'wpr-isParent', ], 'type' => 'checkbox', 'label' => __( 'Schedule Automatic Cleanup', 'rocket' ), 'description' => '', 'section' => 'schedule_cleanup_section', 'page' => 'database', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'automatic_cleanup_frequency' => [ 'container_class' => [ 'wpr-field--children', ], 'type' => 'select', 'label' => __( 'Frequency', 'rocket' ), 'description' => '', 'parent' => 'schedule_automatic_cleanup', 'section' => 'schedule_cleanup_section', 'page' => 'database', 'default' => 'daily', 'sanitize_callback' => 'sanitize_text_field', 'choices' => [ 'daily' => __( 'Daily', 'rocket' ), 'weekly' => __( 'Weekly', 'rocket' ), 'monthly' => __( 'Monthly', 'rocket' ), ], ], ] ); } /** * Registers CDN section * * @since 3.0 */ private function cdn_section() { $this->settings->add_page_section( 'page_cdn', [ 'title' => __( 'CDN', 'rocket' ), 'menu_description' => __( 'Integrate your CDN', 'rocket' ), ] ); $cdn_beacon = $this->beacon->get_suggest( 'cdn' ); $cdn_exclude_beacon = $this->beacon->get_suggest( 'exclude_cdn' ); $this->settings->add_settings_sections( [ 'cdn_section' => [ 'title' => __( 'CDN', 'rocket' ), 'type' => 'fields_container', 'description' => __( 'All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s) you provide.', 'rocket' ) . '
' . sprintf( // translators: %1$s = opening link tag, %2$s = closing link tag. __( 'Not required for services like Cloudflare and Sucuri. Please see our available %1$sAdd-ons%2$s.', 'rocket' ), '', '' ) . '', 'help' => [ 'id' => $this->beacon->get_suggest( 'cdn_section' ), 'url' => $cdn_beacon['url'], ], 'page' => 'page_cdn', ], 'cnames_section' => [ 'type' => 'nocontainer', 'page' => 'page_cdn', ], 'exclude_cdn_section' => [ 'title' => __( 'Exclude files from CDN', 'rocket' ), 'type' => 'fields_container', 'help' => [ 'id' => $cdn_exclude_beacon['id'], 'url' => $cdn_exclude_beacon['url'], ], 'page' => 'page_cdn', ], ] ); $maybe_display_cdn_helper = ''; $addons = []; if ( get_rocket_option( 'do_cloudflare' ) ) { $addons[] = 'Cloudflare'; } if ( get_rocket_option( 'sucury_waf_cache_sync' ) ) { $addons[] = 'Sucuri'; } if ( ! empty( $addons ) ) { $maybe_display_cdn_helper = wp_sprintf( // translators: %1$s = opening em tag, %2$l = list of add-on name(s), %3$s = closing em tag. _n( '%1$s%2$l Add-on%3$s is currently enabled. Configuration of the CDN settings is not required for %2$l to work on your site.', '%1$s%2$l Add-ons%3$s are currently enabled. Configuration of the CDN settings is not required for %2$l to work on your site.', count( $addons ), 'rocket' ), '', $addons, '' ) . '
'; } $this->settings->add_settings_fields( /** * Filters the fields for the CDN section. * * @since 3.5 * @author Remy Perona * * @param array $cdn_settings_fields Data to be added to the CDN section. */ apply_filters( 'rocket_cdn_settings_fields', [ 'cdn' => [ 'type' => 'checkbox', 'label' => __( 'Enable Content Delivery Network', 'rocket' ), 'helper' => $maybe_display_cdn_helper, 'section' => 'cdn_section', 'page' => 'page_cdn', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], 'cdn_cnames' => [ 'type' => 'cnames', 'label' => __( 'CDN CNAME(s)', 'rocket' ), 'description' => __( 'Specify the CNAME(s) below', 'rocket' ), 'default' => [], 'section' => 'cnames_section', 'page' => 'page_cdn', ], 'cdn_reject_files' => [ 'type' => 'textarea', 'description' => __( 'Specify URL(s) of files that should not get served via CDN (one per line).', 'rocket' ), 'helper' => __( 'The domain part of the URL will be stripped automatically.
Use (.*) wildcards to exclude all files of a given file type located at a specific path.', 'rocket' ), 'placeholder' => '/wp-content/plugins/some-plugins/(.*).css', 'section' => 'exclude_cdn_section', 'page' => 'page_cdn', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], ] ) ); } /** * Registers Heartbeat section. * * @since 3.2 */ private function heartbeat_section() { $heartbeat_beacon = $this->beacon->get_suggest( 'heartbeat_settings' ); $this->settings->add_page_section( 'heartbeat', [ 'title' => __( 'Heartbeat', 'rocket' ), 'menu_description' => __( 'Control WordPress Heartbeat API', 'rocket' ), ] ); $this->settings->add_settings_sections( [ 'heartbeat_section' => [ 'title' => __( 'Heartbeat', 'rocket' ), 'description' => __( 'Reducing or disabling the Heartbeat API’s activity can help save some of your server’s resources.', 'rocket' ), 'type' => 'fields_container', 'page' => 'heartbeat', 'help' => $heartbeat_beacon, ], 'heartbeat_settings' => [ 'title' => __( 'Reduce or disable Heartbeat activity', 'rocket' ), 'description' => __( 'Reducing activity will change Heartbeat frequency from one hit each minute to one hit every 2 minutes.', 'rocket' ) . '
' . __( 'Disabling Heartbeat entirely may break plugins and themes using this API.', 'rocket' ), 'type' => 'fields_container', 'page' => 'heartbeat', ], ] ); $fields_default = [ 'type' => 'select', 'page' => 'heartbeat', 'section' => 'heartbeat_settings', 'sanitize_callback' => 'sanitize_text_field', 'default' => 'reduce_periodicity', 'choices' => [ '' => __( 'Do not limit', 'rocket' ), 'reduce_periodicity' => __( 'Reduce activity', 'rocket' ), 'disable' => __( 'Disable', 'rocket' ), ], ]; $this->settings->add_settings_fields( [ 'control_heartbeat' => [ 'type' => 'checkbox', 'label' => __( 'Control Heartbeat', 'rocket' ), 'page' => 'heartbeat', 'section' => 'heartbeat_section', 'sanitize_callback' => 'sanitize_checkbox', 'default' => 0, ], 'heartbeat_admin_behavior' => array_merge( $fields_default, [ 'label' => __( 'Behavior in backend', 'rocket' ), 'description' => '', ] ), 'heartbeat_editor_behavior' => array_merge( $fields_default, [ 'label' => __( 'Behavior in post editor', 'rocket' ), ] ), 'heartbeat_site_behavior' => array_merge( $fields_default, [ 'label' => __( 'Behavior in frontend', 'rocket' ), ] ), ] ); } /** * Registers Add-ons section. * * @since 3.0 */ private function addons_section() { $this->settings->add_page_section( 'addons', [ 'title' => __( 'Add-ons', 'rocket' ), 'menu_description' => __( 'Add more features', 'rocket' ), ] ); $this->settings->add_settings_sections( [ 'one_click' => [ 'title' => __( 'One-click Rocket Add-ons', 'rocket' ), 'description' => __( 'One-Click Add-ons are features extending available options without configuration needed. Switch the option "on" to enable from this screen.', 'rocket' ), 'type' => 'addons_container', 'page' => 'addons', ], ] ); $this->settings->add_settings_sections( [ 'addons' => [ 'title' => __( 'Rocket Add-ons', 'rocket' ), 'description' => __( 'Rocket Add-ons are complementary features extending available options.', 'rocket' ), 'type' => 'addons_container', 'page' => 'addons', ], ] ); $this->settings->add_settings_fields( [ 'do_cloudflare' => [ 'type' => 'rocket_addon', 'label' => __( 'Cloudflare', 'rocket' ), 'logo' => [ 'url' => WP_ROCKET_ASSETS_IMG_URL . 'logo-cloudflare2.svg', 'width' => 153, 'height' => 51, ], 'title' => __( 'Integrate your Cloudflare account with this add-on.', 'rocket' ), 'description' => __( 'Provide your account email, global API key, and domain to use options such as clearing the Cloudflare cache and enabling optimal settings with WP Rocket.', 'rocket' ), 'section' => 'addons', 'page' => 'addons', 'settings_page' => 'cloudflare', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], ] ); /** * Allow to display the "Varnish" tab in the settings page * * @since 2.7 * * @param bool $display true will display the "Varnish" tab. */ if ( apply_filters( 'rocket_display_varnish_options_tab', true ) ) { $varnish_beacon = $this->beacon->get_suggest( 'varnish' ); $this->settings->add_settings_fields( /** * Filters the Varnish field settings data * * @since 3.0 * @author Remy Perona * * @param array $settings Field settings data. */ apply_filters( 'rocket_varnish_field_settings', [ 'varnish_auto_purge' => [ 'type' => 'one_click_addon', 'label' => __( 'Varnish', 'rocket' ), 'logo' => [ 'url' => WP_ROCKET_ASSETS_IMG_URL . 'logo-varnish.svg', 'width' => 152, 'height' => 135, ], 'title' => __( 'If Varnish runs on your server, you must activate this add-on.', 'rocket' ), // translators: %1$s = opening tag, %2$s = closing tag. 'description' => sprintf( __( 'Varnish cache will be purged each time WP Rocket clears its cache to ensure content is always up-to-date.
%1$sLearn more%2$s', 'rocket' ), '', '' ), 'section' => 'one_click', 'page' => 'addons', 'settings_page' => 'varnish', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], ] ) ); } if ( defined( 'WP_ROCKET_SUCURI_API_KEY_HIDDEN' ) && WP_ROCKET_SUCURI_API_KEY_HIDDEN ) { // No need to display the dedicated tab if there is nothing to display on it. $description = __( 'Clear the Sucuri cache when WP Rocket’s cache is cleared.', 'rocket' ); $settings_page = false; } else { $description = __( 'Provide your API key to clear the Sucuri cache when WP Rocket’s cache is cleared.', 'rocket' ); $settings_page = 'sucuri'; } $this->settings->add_settings_fields( [ 'sucury_waf_cache_sync' => [ 'type' => 'rocket_addon', 'label' => __( 'Sucuri', 'rocket' ), 'logo' => [ 'url' => WP_ROCKET_ASSETS_IMG_URL . 'logo-sucuri.png', 'width' => 152, 'height' => 56, ], 'title' => __( 'Synchronize Sucuri cache with this add-on.', 'rocket' ), 'description' => $description, 'section' => 'addons', 'page' => 'addons', 'settings_page' => $settings_page, 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], ] ); } /** * Registers Cloudflare section. * * @since 3.0 */ private function cloudflare_section() { $this->settings->add_page_section( 'cloudflare', [ 'title' => __( 'Cloudflare', 'rocket' ), 'menu_description' => '', 'class' => [ 'wpr-subMenuItem', 'wpr-addonSubMenuItem', ], ] ); $beacon_cf_credentials = $this->beacon->get_suggest( 'cloudflare_credentials' ); $beacon_cf_settings = $this->beacon->get_suggest( 'cloudflare_settings' ); $beacon_cf_credentials_api = $this->beacon->get_suggest( 'cloudflare_credentials_api' ); $this->settings->add_settings_sections( [ 'cloudflare_credentials' => [ 'type' => 'fields_container', 'title' => __( 'Cloudflare credentials', 'rocket' ), 'help' => [ 'id' => $beacon_cf_credentials['id'], 'url' => $beacon_cf_credentials['url'], ], 'page' => 'cloudflare', ], 'cloudflare_settings' => [ 'type' => 'fields_container', 'title' => __( 'Cloudflare settings', 'rocket' ), 'help' => [ 'id' => $beacon_cf_settings['id'], 'url' => $beacon_cf_settings['url'], ], 'page' => 'cloudflare', ], ] ); if ( ! defined( 'WP_ROCKET_CF_API_KEY_HIDDEN' ) || ! WP_ROCKET_CF_API_KEY_HIDDEN ) { $this->settings->add_settings_fields( [ 'cloudflare_api_key' => [ 'label' => _x( 'Global API key:', 'Cloudflare', 'rocket' ), 'description' => sprintf( '%2$s', esc_url( $beacon_cf_credentials_api['url'] ), _x( 'Find your API key', 'Cloudflare', 'rocket' ) ), 'default' => '', 'section' => 'cloudflare_credentials', 'page' => 'cloudflare', ], ] ); } $this->settings->add_settings_fields( [ 'cloudflare_email' => [ 'label' => _x( 'Account email', 'Cloudflare', 'rocket' ), 'default' => '', 'container_class' => [ 'wpr-field--split', ], 'section' => 'cloudflare_credentials', 'page' => 'cloudflare', ], 'cloudflare_zone_id' => [ 'label' => _x( 'Zone ID', 'Cloudflare', 'rocket' ), 'default' => '', 'container_class' => [ 'wpr-field--split', ], 'section' => 'cloudflare_credentials', 'page' => 'cloudflare', ], 'cloudflare_devmode' => [ 'type' => 'sliding_checkbox', 'label' => __( 'Development mode', 'rocket' ), // translators: %1$s = link opening tag, %2$s = link closing tag. 'description' => sprintf( __( 'Temporarily activate development mode on your website. This setting will automatically turn off after 3 hours. %1$sLearn more%2$s', 'rocket' ), '', '' ), 'default' => 0, 'section' => 'cloudflare_settings', 'page' => 'cloudflare', 'sanitize_callback' => 'sanitize_checkbox', ], 'cloudflare_auto_settings' => [ 'type' => 'sliding_checkbox', 'label' => __( 'Optimal settings', 'rocket' ), 'description' => __( 'Automatically enhances your Cloudflare configuration for speed, performance grade and compatibility.', 'rocket' ), 'default' => 0, 'section' => 'cloudflare_settings', 'page' => 'cloudflare', 'sanitize_callback' => 'sanitize_checkbox', ], 'cloudflare_protocol_rewrite' => [ 'type' => 'sliding_checkbox', 'label' => __( 'Relative protocol', 'rocket' ), 'description' => __( 'Should only be used with Cloudflare\'s flexible SSL feature. URLs of static files (CSS, JS, images) will be rewritten to use // instead of http:// or https://.', 'rocket' ), 'default' => 0, 'section' => 'cloudflare_settings', 'page' => 'cloudflare', 'sanitize_callback' => 'sanitize_checkbox', ], ] ); } /** * Registers Sucuri cache section. * * @since 3.2 */ private function sucuri_section() { if ( defined( 'WP_ROCKET_SUCURI_API_KEY_HIDDEN' ) && WP_ROCKET_SUCURI_API_KEY_HIDDEN ) { return; } $sucuri_beacon = $this->beacon->get_suggest( 'sucuri_credentials' ); $this->settings->add_page_section( 'sucuri', [ 'title' => __( 'Sucuri', 'rocket' ), 'menu_description' => '', 'class' => [ 'wpr-subMenuItem', 'wpr-addonSubMenuItem', ], ] ); $this->settings->add_settings_sections( [ 'sucuri_credentials' => [ 'type' => 'fields_container', 'title' => __( 'Sucuri credentials', 'rocket' ), 'page' => 'sucuri', 'help' => [ 'id' => $sucuri_beacon['id'], 'url' => $sucuri_beacon['url'], ], ], ] ); $this->settings->add_settings_fields( [ 'sucury_waf_api_key' => [ 'label' => _x( 'Firewall API key (for plugin), must be in format {32 characters}/{32 characters}:', 'Sucuri', 'rocket' ), 'description' => sprintf( '%2$s', 'https://kb.sucuri.net/firewall/Performance/clearing-cache', _x( 'Find your API key', 'Sucuri', 'rocket' ) ), 'default' => '', 'section' => 'sucuri_credentials', 'page' => 'sucuri', ], ] ); } /** * Sets hidden fields. * * @since 3.0 */ private function hidden_fields() { $this->settings->add_hidden_settings_fields( /** * Filters the hidden settings fields * * @since 3.5 * @author Remy Perona * * @param array $hidden_settings_fields An array of hidden settings fields ID */ apply_filters( 'rocket_hidden_settings_fields', [ 'consumer_key', 'consumer_email', 'secret_key', 'license', 'secret_cache_key', 'minify_css_key', 'minify_js_key', 'version', 'cloudflare_old_settings', 'sitemap_preload_url_crawl', 'cache_ssl', 'minify_google_fonts', 'emoji', ] ) ); } /** * Sanitize and format a list. * * @since 3.5.5 * * @param array $list A list of strings. * @param string $tag_name Name of the HTML tag that will wrap each element of the list. * @return array */ private function sanitize_and_format_list( $list, $tag_name = 'strong' ) { if ( ! is_array( $list ) || empty( $list ) ) { return []; } $list = array_filter( $list ); if ( empty( $list ) ) { return []; } $list = array_unique( $list ); if ( empty( $tag_name ) ) { return $list; } $format = "<$tag_name>%s"; return array_map( 'sprintf', array_fill( 0, count( $list ), $format ), $list ); } /** * Checks if combine JS option should be disabled * * @since 3.9 * * @return bool */ private function disable_combine_js(): bool { if ( (bool) get_rocket_option( 'delay_js', 0 ) ) { return true; } return ! (bool) get_rocket_option( 'minify_js', 0 ); } }
Warning: Class '\WP_Rocket\Engine\Admin\Settings\Page' not found in /home/elmfoodc/public_html/wp-content/plugins/mihan-wp-rocket/inc/deprecated/3.5.php on line 9
اندازه گیری خاکستر گوشت - علم فود

اندازه گیری خاکستر گوشت

اندازه گیری خاکستر گوشت به چه صورت است؟ سلام به شما دوست عزیز علم فودی. ممنونیم که علم فود رو برای آشنایی با روش اندازه گیری خاکستر گوشت انتخاب کردید. تا پایان این مطلب با علم فود همراه باشید🌹🌹.

 

خاکستر گوشت چیست؟

طبق تعریف خاکستر کل مقدار باقیمانده حاصل از سوزاندن نمونه مورد آزمون، در دمای 25 ± 550 درجه سلسیوس است.

 

وسایل مورد نیاز برای اندازه گیری خاکستر گوشت

1.آب مقطر

2.هیدروزن پراکسید 30%

3.خشکانه

4.ترازوی دقیق آزمایشگاهی با دقت 0.1میلی گرم

5.آون

6. خردکن، چرخ گوشت

7.بوته چینی

8.کوره الکتریکی

9.اجاق الکتریکی یا شعله گاز

 

روش اندازه گیری خاکستر گوشت

1. بوته را به مدت 20 دقیقه در کورۀ الکتریکی 25 ±  550 درجۀ سلسیوس گرما دهید، سپس آن را در خشکانه و در دمای اتاق خنک کنید. سپس با ترازوی دقیق آزمایشگاهی با دقت تقریبی 0.1 میلی گرم وزن کنید (m0).

2. 1.5 تا 2 گرم از نمونه ازمایشگاهی را به بوته انتقال دهید و به طور یکنواخت پخش کنید که باید بدون تاخیر و با ترازوی دقیق و با دقت تقریبی 0.1 میلی گرم وزن شود (m1)

3.اگر کورۀ الکتریکی مجهز به کنترل کنندۀ زمانی و دمایی باشد، بوتۀ حاوی نمونه را در کورۀ الکتریکی سرد  قرار دهید و بهتدریج دمای کوره را تا 25 ±  550 درجۀ سلسیوس باال ببرید و 5 تا 6 ساعت عمل گرما  دادن را در دمای 25 ±  550 درجۀ سلسیوس ادامه دهید تا خاکستر سفید رنگ حاصل شود. سپس بوته  را از کوره بردارید و در خشکانه خنک کنید.

4. بررسی خاکستر: اگر خاکستر هنوز سیاه باشد، بوته را سرد کنید و سپس چند قطره هیدروژنپراکسید یا آب
ّ مقطر اضافه کنید و پس از تبخیر رطوبت بر روی صفحه گرم، ادامۀ عمل را مطابق همین دستور تکرار کنید.
پس از سرد کردن، به وسیلۀ ترازوی آزمایشگاهی با دقت تقریبی 0.1 میلی گرم وزن کنید(m2).

این مقاله رو از دست نده:  صفر تا 100 آزمون های آبمیوه

5.چنانچه کوره دارای کنترل کننده دما و زمان نباشد، ابتدا نمونه را در دمای 130 درجه سلسیوس به مدت یک ساعت در اون خشک کنید، سپس بوته را از داخل اون بردارید و روی اجاق الکتریکی یا شعله گاز گرما دهید تا نمونه مورد نظر کاملا بسوزد و دیگر دودی از آن متصاعد نشود. در هنگام سوزاندن، نمونه نباید آتش بگیرد و شعله ور شود.

6.سپس بوته حاوی نمونه را در کوره الکتریکی سرد قرار دهید و دمای کوره را تا 25±   550 درجة سلسیوس
بالا ببرید و بعد از 4 ساعت، بوته را از کوره بردارید و در خشکانه خنک کنید.

7.فرمول اندازه گیری درصد خاکستر گوشت:

فرمول اندازه گیریب درصد خاکستر گوشت

 

علم فود

علم فود در شبکه های اجتماعی

فهرست مطالب

سایر مقالات علم فود