=> __( 'Preload Fonts', 'rocket' ), 'type' => 'fields_container', // translators: %1$s = opening tag, %2$s = closing tag. 'description' => sprintf( __( 'Improves performance by helping browsers discover fonts in CSS files. %1$sMore info%2$s', 'rocket' ), '', '' ), 'help' => [ 'id' => $fonts_preload['id'], 'url' => $fonts_preload['url'], ], 'page' => 'preload', ], ] ); $this->settings->add_settings_fields( [ 'manual_preload' => [ 'type' => 'checkbox', 'label' => __( 'Activate Preloading', 'rocket' ), 'section' => 'preload_section', 'page' => 'preload', 'default' => 1, 'sanitize_callback' => 'sanitize_checkbox', 'container_class' => [ 'wpr-isParent', ], ], 'preload_excluded_uri' => [ 'type' => 'textarea', 'label' => __( 'Exclude URLs', 'rocket' ), 'container_class' => [ 'wpr-field--children', ], // translators: %1$s = opening tag, %2$s = closing tag. 'description' => sprintf( __( 'Specify URLs to be excluded from the preload feature (one per line). %1$sMore info%2$s', 'rocket' ), '', '' ), 'placeholder' => '/author/(.*)', 'helper' => 'Use (.*) wildcards to address multiple URLs under a given path.', 'parent' => 'manual_preload', 'section' => 'preload_section', 'page' => 'preload', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], 'dns_prefetch' => [ 'type' => 'textarea', 'label' => __( 'URLs to prefetch', 'rocket' ), 'description' => __( 'Specify external hosts to be prefetched (no http:, one per line)', 'rocket' ), 'placeholder' => '//example.com', 'section' => 'dns_prefetch_section', 'page' => 'preload', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], 'preload_fonts' => [ 'type' => 'textarea', 'label' => __( 'Fonts to preload', 'rocket' ), 'description' => __( 'Specify urls of the font files to be preloaded (one per line). Fonts must be hosted on your own domain, or the domain you have specified on the CDN tab.', 'rocket' ), 'helper' => __( 'The domain part of the URL will be stripped automatically.
Allowed font extensions: otf, ttf, svg, woff, woff2.', 'rocket' ), 'placeholder' => '/wp-content/themes/your-theme/assets/fonts/font-file.woff', 'section' => 'preload_fonts_section', 'page' => 'preload', 'default' => [], 'sanitize_callback' => 'sanitize_textarea', ], 'preload_links' => [ 'type' => 'checkbox', 'label' => __( 'Enable link preloading', 'rocket' ), 'section' => 'preload_links_section', 'page' => 'preload', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], ] ); } /** * Registers Advanced Cache section. * * @since 3.0 */ private function advanced_cache_section() { $this->settings->add_page_section( 'advanced_cache', [ 'title' => __( 'Advanced Rules', 'rocket' ), 'menu_description' => __( 'Fine-tune cache rules', 'rocket' ), ] ); $ecommerce_beacon = $this->beacon->get_suggest( 'ecommerce' ); $cache_query_strings_beacon = $this->beacon->get_suggest( 'cache_query_strings' ); $never_cache_beacon = $this->beacon->get_suggest( 'exclude_cache' ); $never_cache_cookie_beacon = $this->beacon->get_suggest( 'exclude_cookie' ); $exclude_user_agent_beacon = $this->beacon->get_suggest( 'exclude_user_agent' ); $always_purge_beacon = $this->beacon->get_suggest( 'always_purge' ); $ecommerce_plugin = ''; $reject_uri_desc = __( 'Sensitive pages like custom login/logout URLs should be excluded from cache.', 'rocket' ); if ( function_exists( 'WC' ) && function_exists( 'wc_get_page_id' ) ) { $ecommerce_plugin = _x( 'WooCommerce', 'plugin name', 'rocket' ); } elseif ( function_exists( 'EDD' ) ) { $ecommerce_plugin = _x( 'Easy Digital Downloads', 'plugin name', 'rocket' ); } elseif ( function_exists( 'it_exchange_get_page_type' ) && function_exists( 'it_exchange_get_page_url' ) ) { $ecommerce_plugin = _x( 'iThemes Exchange', 'plugin name', 'rocket' ); } elseif ( defined( 'JIGOSHOP_VERSION' ) && function_exists( 'jigoshop_get_page_id' ) ) { $ecommerce_plugin = _x( 'Jigoshop', 'plugin name', 'rocket' ); } elseif ( defined( 'WPSHOP_VERSION' ) && class_exists( 'wpshop_tools' ) && method_exists( 'wpshop_tools', 'get_page_id' ) ) { $ecommerce_plugin = _x( 'WP-Shop', 'plugin name', 'rocket' ); } if ( ! empty( $ecommerce_plugin ) ) { $reject_uri_desc .= sprintf( // translators: %1$s = opening tag, %2$s = plugin name, %3$s closing tag. __( '
Cart, checkout and "my account" pages set in %1$s%2$s%3$s will be detected and never cached by default.', 'rocket' ), '', $ecommerce_plugin, '' ); } $this->settings->add_settings_sections( [ 'cache_reject_uri_section' => [ 'title' => __( 'Never Cache URL(s)', 'rocket' ), 'type' => 'fields_container', // translators: %1$s = opening tag, %2$s = closing tag. 'description' => $reject_uri_desc, 'help' => $never_cache_beacon, 'page' => 'advanced_cache', ], 'cache_reject_cookies_section' => [ 'title' => __( 'Never Cache Cookies', 'rocket' ), 'type' => 'fields_container', 'page' => 'advanced_cache', 'help' => $never_cache_cookie_beacon, ], 'cache_reject_ua_section' => [ 'title' => __( 'Never Cache User Agent(s)', 'rocket' ), 'type' => 'fields_container', '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_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 = ''; /** * Name from addons requiring the helper message. * * @param string[] addons. * * @return string [] */ $addons = apply_filters( 'rocket_cdn_helper_addons', [] ); if ( ! is_array( $addons ) ) { $addons = []; } $addons = array_unique( $addons ); 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() { $webp_beacon = $this->beacon->get_suggest( 'webp' ); $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', ], ] ); $default_cf_settings = [ 'do_cloudflare' => [ 'type' => 'rocket_addon', 'label' => __( 'Cloudflare', 'rocket' ), 'logo' => [ 'url' => rocket_get_constant( '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' ), 'helper' => sprintf( // translators: %1$s = opening span tag, %2$s = closing span tag. __( '%1$sPlanning on using Automatic Platform Optimization (APO)?%2$s Just activate the official Cloudflare plugin and configure it. WP Rocket will automatically enable compatibility.', 'rocket' ), '', '' ), 'section' => 'addons', 'page' => 'addons', 'settings_page' => 'cloudflare', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', ], ]; /** * Filters the Cloudflare Addon field values * * @since 3.14 * * @param array $cf_settings Array of values to populate the field. */ $cf_settings = (array) apply_filters( 'rocket_cloudflare_field_settings', $default_cf_settings ); $cf_settings = wp_parse_args( $cf_settings, $default_cf_settings ); $this->settings->add_settings_fields( $cf_settings ); /** * 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', ], ] ) ); } $webp_beacon = $this->beacon->get_suggest( 'webp' ); if ( rocket_valid_key() && ! \Imagify_Partner::has_imagify_api_key() ) { $imagify_link = ''; } else { $imagify_link = ''; } $this->settings->add_settings_fields( [ 'cache_webp' => /** * Add more content to the 'cache_webp' setting field. * * @since 3.10 moved to add-on section * @since 3.4 * * @param array $cache_webp_field Data to be added to the setting field. */ apply_filters( 'rocket_cache_webp_setting_field', [ 'type' => 'one_click_addon', 'label' => __( 'WebP Compatibility', 'rocket' ), 'logo' => [ 'url' => WP_ROCKET_ASSETS_IMG_URL . 'logo-webp.svg', 'width' => 152, 'height' => 135, ], 'title' => __( 'Improve browser compatibility for WebP images.', 'rocket' ), // translators: %1$s = opening tag, %2$s = closing tag. 'description' => sprintf( // translators: %1$s and %3$s = opening tag, %2$s = closing tag. __( 'Enable this option if you would like WP Rocket to serve WebP images to compatible browsers. Please note that WP Rocket cannot create WebP images for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore info%2$s', 'rocket' ), $imagify_link, '', '' ), 'section' => 'one_click', 'page' => 'addons', 'settings_page' => 'webp', 'default' => 0, 'sanitize_callback' => 'sanitize_checkbox', 'container_class' => [ 'wpr-webp-addon', ], ] ), ] ); 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', 'cache_ssl', 'minify_google_fonts', 'emoji', 'remove_unused_css', 'async_css', 'minify_concatenate_css', ] ) ); } /** * 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 ); } /** * Checks if combine CSS option should be disabled * * @since 3.11 * * @return bool */ private function disable_combine_css(): bool { if ( (bool) get_rocket_option( 'remove_unused_css', 0 ) ) { return true; } return ! (bool) get_rocket_option( 'minify_css', 0 ); } /** * Render radio options sub fields. * * @since 3.10 * * @param array $sub_fields Array of fields to display. */ public function display_radio_options_sub_fields( $sub_fields ) { $sub_fields = $this->settings->set_radio_buttons_sub_fields_value( $sub_fields ); $this->render->render_fields( $sub_fields ); } } گیفت حنای شیشه ای استوانه ای با گل فومی - فروشگاه فرشباف

فروشگاه فرشباف | تبریز، تربیت، بازار بزرگ شمس تبریزی، طبقه دوم واحد 25

041-35552210 | 0914-2567005
0 محصول / 0 ﷼
ورود / ثبت نام
ورودایجاد حساب کاربری

رمز عبور را فراموش کرده اید؟
منو
فروشگاه فرشباف
0 محصول / 0 ﷼
  • تولد
    • بادکنک
      • بادکنک فویلی
        • اعداد
        • شخصیت های کارتونی
        • happy birthday-HBD
        • ستاره و قلب
      • بادکنک لاتکس
        • ساده
        • پاستیلی
        • کروم
        • خالدار
        • طرحدار
        • ماری
        • 6 اینچ
        • 24 اینچ
    • تم تولد
      • تم تولد دخترانه
      • تم تولد پسرانه
      • تم تولد بزرگسال
      • متالایزر-مجلسی
    • شمع
      • شمع اعداد
        • هندسی
        • متالیک
        • مولتی
      • شمع مدادی
      • شمع شخصیت های کارتونی
      • شمع طرح خاص
    • ملزومات تزئینی
      • فشفشه
      • بمب
      • دود رنگی
      • نخ شادی
      • تاج تولدی
      • تاپر
      • پرده لیزری
      • ریسه Happy birthday
      • گیره بادکنک
      • پولک بادکنک
      • روبان بادکنک
      • متفرقه
        • نوار طلقی
        • سبیل پشت چسبی
  • کادویی
    • جعبه
      • فلزی
      • چوبی
      • مقوایی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • سایز 5
        • سایز 6
        • سایز 7
        • سایز 8
        • سایز 9
        • سایز 10
    • پاکت پول
      • بزرگسال
      • بچه گانه
      • مینی کارت
    • کیف دستی
      • گراف
        • مینی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • کف پهن
      • گلاسه
        • مینی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • کف پهن
    • شمع تزئینی
      • وارمر
      • شمع استوانه ای
      • قلمی(پیچی)
    • کاغذ کادو
      • گلاسه
      • گراف
      • لیزری
    • پاکت کادو
    • مجسمه- عروسک
      • مجسمه
      • عروسک
    • دکوری
      • جاشمعی
      • گل
      • نئونی
  • عروسی – حنا
    • عروسی
      • کله قند بزرگ
      • کله قند کوچک جفتی
      • سفره
      • سفره با قند
      • دفتر جهیزیه
      • آینه
      • خودکار تزئین شده
      • گیلاس عسل خوری
      • نبات
      • گیفت
    • حنا
      • سبد
      • شال
      • دستمال رقص
      • کف بند
      • کمر عروس
      • سینی حنا
      • گیفت
  • فصلی
    • ولنتاین
    • یلدا
    • نوروز
  • درباره ما
  • تماس با ما
Home تولد تم تولد گیفت حنای شیشه ای استوانه ای با گل فومی
گیفت حنای شیشه ای استوانه ای با گل فومی
بازگشت به محصولات
مجسمه فرشته 3تايي 1,120,000 ﷼

گیفت حنای شیشه ای استوانه ای با گل فومی

  • گیفت حنای شیشه ای استوانه ای
  • طرح : گل فومی
  • ارتفاع :5/5cm
  • قطر :2cm
  • تعداد :30 عددی
  • ارسال به سراسر ایران
افزودن به علاقه مندی
SKU: 20220008 Category: تم تولد
اشتراک گذاری:
  • Description
  • Reviews (0)
  • Shipping & Delivery
Description
 ویژگی های محصول:

یاد بود یا گیفت در جشن ها بخشی از مراسم جشن است که مهمانان به عنوان یادگاری همراه خود به خانه می‌برند.

Reviews (0)

Reviews

There are no reviews yet.

Be the first to review “گیفت حنای شیشه ای استوانه ای با گل فومی” لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Shipping & Delivery
wd-ship-1
wd-ship-2

MAECENAS IACULIS

Vestibulum curae torquent diam diam commodo parturient penatibus nunc dui adipiscing convallis bulum parturient suspendisse parturient a.Parturient in parturient scelerisque nibh lectus quam a natoque adipiscing a vestibulum hendrerit et pharetra fames nunc natoque dui.

ADIPISCING CONVALLIS BULUM

  • Vestibulum penatibus nunc dui adipiscing convallis bulum parturient suspendisse.
  • Abitur parturient praesent lectus quam a natoque adipiscing a vestibulum hendre.
  • Diam parturient dictumst parturient scelerisque nibh lectus.

Scelerisque adipiscing bibendum sem vestibulum et in a a a purus lectus faucibus lobortis tincidunt purus lectus nisl class eros.Condimentum a et ullamcorper dictumst mus et tristique elementum nam inceptos hac parturient scelerisque vestibulum amet elit ut volutpat.

Related products

Add to cart
مشاهده سریع
افزودن به علاقه مندی

کلاه کوتاه ال او ال

تم تولد
320,000 ﷼
Add to cart
مشاهده سریع
افزودن به علاقه مندی

بشقاب لیوان ال ا ال

تم تولد
440,000 ﷼
Placeholder
Placeholder
Add to cart
مشاهده سریع
افزودن به علاقه مندی

بشقاب متالیز آبی

تم تولد
240,000 ﷼
Placeholder
Add to cart
مشاهده سریع
افزودن به علاقه مندی

کیف دستی

تم تولد
1,740,000 ﷼
Add to cart
مشاهده سریع
افزودن به علاقه مندی

بادکنک فویلی قلب کروم سرمه ای 5تایی

تم تولد
480,000 ﷼
Add to cart
مشاهده سریع
افزودن به علاقه مندی

بال پروانه 5تایی رنگ جور

تم تولد, مقوایی
3,460,000 ﷼
Add to cart
مشاهده سریع
افزودن به علاقه مندی

کله قند بزرگ گل پارچه ای

تم تولد
2,520,000 ﷼
پخش عمده ملزومات تولد و مناسبت ها به سراسر ایران
  • تبریز، تربیت، بازار بزرگ شمس تبریزی، طبقه دوم واحد 25
  • Phone:0914-2567005
  • Fax: 041-35552210
  • Instagram
  • Telegram
  • WhatsApp
  • Twitter
کلیه حقوق این سایت محفوظ میباشد.
  • منو
  • دسته بندی ها
  • تولد
    • بادکنک
      • بادکنک فویلی
        • اعداد
        • شخصیت های کارتونی
        • happy birthday-HBD
        • ستاره و قلب
      • بادکنک لاتکس
        • ساده
        • پاستیلی
        • کروم
        • خالدار
        • طرحدار
        • ماری
        • 6 اینچ
        • 24 اینچ
    • تم تولد
      • تم تولد دخترانه
      • تم تولد پسرانه
      • تم تولد بزرگسال
      • متالایزر-مجلسی
    • شمع
      • شمع اعداد
        • هندسی
        • متالیک
        • مولتی
      • شمع مدادی
      • شمع شخصیت های کارتونی
      • شمع طرح خاص
    • ملزومات تزئینی
      • فشفشه
      • بمب
      • دود رنگی
      • نخ شادی
      • تاج تولدی
      • تاپر
      • پرده لیزری
      • ریسه Happy birthday
      • گیره بادکنک
      • پولک بادکنک
      • روبان بادکنک
      • متفرقه
        • نوار طلقی
        • سبیل پشت چسبی
  • کادویی
    • جعبه
      • فلزی
      • چوبی
      • مقوایی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • سایز 5
        • سایز 6
        • سایز 7
        • سایز 8
        • سایز 9
        • سایز 10
    • پاکت پول
      • بزرگسال
      • بچه گانه
      • مینی کارت
    • کیف دستی
      • گراف
        • مینی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • کف پهن
      • گلاسه
        • مینی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • کف پهن
    • شمع تزئینی
      • وارمر
      • شمع استوانه ای
      • قلمی(پیچی)
    • کاغذ کادو
      • گلاسه
      • گراف
      • لیزری
    • پاکت کادو
    • مجسمه- عروسک
      • مجسمه
      • عروسک
    • دکوری
      • جاشمعی
      • گل
      • نئونی
  • عروسی – حنا
    • عروسی
      • کله قند بزرگ
      • کله قند کوچک جفتی
      • سفره
      • سفره با قند
      • دفتر جهیزیه
      • آینه
      • خودکار تزئین شده
      • گیلاس عسل خوری
      • نبات
      • گیفت
    • حنا
      • سبد
      • شال
      • دستمال رقص
      • کف بند
      • کمر عروس
      • سینی حنا
      • گیفت
  • فصلی
    • ولنتاین
    • یلدا
    • نوروز
  • درباره ما
  • تماس با ما
  • تولد
    • بادکنک
      • بادکنک فویلی
        • اعداد
        • شخصیت های کارتونی
        • happy birthday-HBD
        • ستاره و قلب
      • بادکنک لاتکس
        • ساده
        • پاستیلی
        • کروم
        • خالدار
        • طرحدار
        • ماری
        • 6 اینچ
        • 24 اینچ
    • تم تولد
      • تم تولد دخترانه
      • تم تولد پسرانه
      • تم تولد بزرگسال
      • متالایزر-مجلسی
    • شمع
      • شمع اعداد
        • هندسی
        • متالیک
        • مولتی
      • شمع مدادی
      • شمع شخصیت های کارتونی
      • شمع طرح خاص
    • ملزومات تزئینی
      • فشفشه
      • بمب
      • دود رنگی
      • نخ شادی
      • تاج تولدی
      • تاپر
      • پرده لیزری
      • ریسه Happy birthday
      • گیره بادکنک
      • پولک بادکنک
      • روبان بادکنک
      • متفرقه
        • نوار طلقی
        • سبیل پشت چسبی
  • کادویی
    • جعبه
      • فلزی
      • چوبی
      • مقوایی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • سایز 5
        • سایز 6
        • سایز 7
        • سایز 8
        • سایز 9
        • سایز 10
    • پاکت پول
      • بزرگسال
      • بچه گانه
      • مینی کارت
    • کیف دستی
      • گراف
        • مینی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • کف پهن
      • گلاسه
        • مینی
        • سایز 1
        • سایز 2
        • سایز 3
        • سایز 4
        • کف پهن
    • شمع تزئینی
      • وارمر
      • شمع استوانه ای
      • قلمی(پیچی)
    • کاغذ کادو
      • گلاسه
      • گراف
      • لیزری
    • پاکت کادو
    • مجسمه- عروسک
      • مجسمه
      • عروسک
    • دکوری
      • جاشمعی
      • گل
      • نئونی
  • عروسی – حنا
    • عروسی
      • کله قند بزرگ
      • کله قند کوچک جفتی
      • سفره
      • سفره با قند
      • دفتر جهیزیه
      • آینه
      • خودکار تزئین شده
      • گیلاس عسل خوری
      • نبات
      • گیفت
    • حنا
      • سبد
      • شال
      • دستمال رقص
      • کف بند
      • کمر عروس
      • سینی حنا
      • گیفت
  • فصلی
    • ولنتاین
    • یلدا
    • نوروز
  • درباره ما
  • تماس با ما
  • ورود / ثبت نام

گیفت حنای شیشه ای استوانه ای با گل فومی

افزودن به علاقه مندی

جهت خرید عمده با شماره های ما درتماس باشید. Dismiss

فروشگاه
علاقه مندی
0 محصول سبد خرید
حساب کاربری من