meta name="robots ="noindex"> 60713422
Back to menu

Shipping Time: Shipping cost: US $0.00 US $0.00
Out of stock
View Cart
Please wait, we try to get a transaction confirmation as soon as possible.
Ready to ship | Fast shipping & Free returns
Product Description

<?php
/**
* Admin integration file.
*
* @package performance-lab
*/

// @codeCoverageIgnoreStart
if ( ! defined( ‘ABSPATH’ ) ) {
exit; // Exit if accessed directly.
}
// @codeCoverageIgnoreEnd

/**
* Adds the features page to the Settings menu.
*
* @since 1.0.0
* @since 3.0.0 Renamed to perflab_add_features_page().
*/
function perflab_add_features_page(): void {
$hook_suffix = add_options_page(
__( ‘Performance Features’, ‘performance-lab’ ),
__( ‘Performance’, ‘performance-lab’ ),
‘manage_options’,
PERFLAB_SCREEN,
‘perflab_render_settings_page’
);

// Add the following hooks only if the screen was successfully added.
if ( false !== $hook_suffix ) {
add_action( “load-{$hook_suffix}”, ‘perflab_load_features_page’, 10, 0 );
add_filter( ‘plugin_action_links_’ . plugin_basename( PERFLAB_MAIN_FILE ), ‘perflab_plugin_action_links_add_settings’ );
}
}

add_action( ‘admin_menu’, ‘perflab_add_features_page’ );

/**
* Initializes functionality for the features page.
*
* @since 1.0.0
* @since 3.0.0 Renamed to perflab_load_features_page(), and the
* $module and $hook_suffix parameters were removed.
*/
function perflab_load_features_page(): void {
// Handle script enqueuing for settings page.
add_action( ‘admin_enqueue_scripts’, ‘perflab_enqueue_features_page_scripts’ );

// Handle admin notices for settings page.
add_action( ‘admin_notices’, ‘perflab_plugin_admin_notices’ );

// Handle style for settings page.
add_action( ‘admin_head’, ‘perflab_print_features_page_style’ );
}

/**
* Renders the plugin page.
*
* @since 1.0.0
* @since 3.0.0 Renamed to perflab_render_settings_page().
*/
function perflab_render_settings_page(): void {
?>
<div class=”wrap”>
<?php perflab_render_plugins_ui(); ?>
</div>
<?php
}

/**
* Initializes admin pointer.
*
* Handles the bootstrapping of the admin pointer.
* Mainly jQuery code that is self-initialising.
*
* @since 1.0.0
*
* @param string|null $hook_suffix The current admin page. Note this can be null because `iframe_header()` does not
* ensure that `$hook_suffix` is a string when it calls `do_action( ‘admin_enqueue_scripts’, $hook_suffix )`.
*/
function perflab_admin_pointer( ?string $hook_suffix = ” ): void {
// Do not show admin pointer in multisite Network admin or User admin UI.
if ( is_network_admin() || is_user_admin() ) {
return;
}
$current_user = get_current_user_id();
$dismissed = array_filter( explode( ‘,’, (string) get_user_meta( get_current_user_id(), ‘dismissed_wp_pointers’, true ) ) );

if ( in_array( ‘perflab-admin-pointer’, $dismissed, true ) ) {
return;
}

if ( ! in_array( $hook_suffix, array( ‘index.php’, ‘plugins.php’ ), true ) ) {

// Do not show on the settings page and dismiss the pointer.
if ( isset( $_GET[‘page’] ) && PERFLAB_SCREEN === $_GET[‘page’] && ( ! in_array( ‘perflab-admin-pointer’, $dismissed, true ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$dismissed[] = ‘perflab-admin-pointer’;
update_user_meta( $current_user, ‘dismissed_wp_pointers’, implode( ‘,’, $dismissed ) );
}

return;
}

// Enqueue pointer CSS and JS.
wp_enqueue_style( ‘wp-pointer’ );
wp_enqueue_script( ‘wp-pointer’ );
add_action( ‘admin_print_footer_scripts’, ‘perflab_render_pointer’, 10, 0 );
}
add_action( ‘admin_enqueue_scripts’, ‘perflab_admin_pointer’ );

/**
* Renders the Admin Pointer.
*
* Handles the rendering of the admin pointer.
*
* @since 1.0.0
* @since 2.4.0 Optional arguments were added to make the function reusable for different pointers.
*
* @param string $pointer_id Optional. ID of the pointer. Default ‘perflab-admin-pointer’.
* @param array{heading?: string, content?: string} $args Optional. Pointer arguments. Supports ‘heading’ and ‘content’ entries.
* Defaults are the heading and content for the ‘perflab-admin-pointer’.
*/
function perflab_render_pointer( string $pointer_id = ‘perflab-admin-pointer’, array $args = array() ): void {
if ( ! isset( $args[‘heading’] ) ) {
$args[‘heading’] = __( ‘Performance Lab’, ‘performance-lab’ );
}
if ( ! isset( $args[‘content’] ) ) {
$args[‘content’] = sprintf(
/* translators: %s: settings page link */
esc_html__( ‘You can now test upcoming WordPress performance features. Open %s to individually toggle the performance features.’, ‘performance-lab’ ),
‘<a href=”‘ . esc_url( add_query_arg( ‘page’, PERFLAB_SCREEN, admin_url( ‘options-general.php’ ) ) ) . ‘”>’ . esc_html__( ‘Settings > Performance’, ‘performance-lab’ ) . ‘</a>’
);
}

$wp_kses_options = array(
‘a’ => array(
‘href’ => array(),
),
);

?>
<script id=”<?php echo esc_attr( $pointer_id ); ?>” type=”text/javascript”>
jQuery( function() {
// Pointer Options.
const options = {
content: <?php echo wp_json_encode( ‘<h3>’ . esc_html( $args[‘heading’] ) . ‘</h3><p>’ . wp_kses( $args[‘content’], $wp_kses_options ) . ‘</p>’ ); ?>,
position: {
edge: ‘left’,
align: ‘right’,
},
pointerClass: ‘wp-pointer arrow-top’,
pointerWidth: 420,
close: function() {
jQuery.post(
window.ajaxurl,
{
pointer: <?php echo wp_json_encode( $pointer_id ); ?>,
action: ‘dismiss-wp-pointer’,
_wpnonce: <?php echo wp_json_encode( wp_create_nonce( ‘dismiss_pointer’ ) ); ?>,
}
);
}
};

jQuery( ‘#menu-settings’ ).pointer( options ).pointer( ‘open’ );
} );
</script>
<?php
}

/**
* Adds a link to the features page to the plugin’s entry in the plugins list table.
*
* This function is only used if the features page exists and is accessible.
*
* @since 1.0.0
*
* @see perflab_add_features_page()
*
* @param string[]|mixed $links List of plugin action links HTML.
* @return string[]|mixed Modified list of plugin action links HTML.
*/
function perflab_plugin_action_links_add_settings( $links ) {
if ( ! is_array( $links ) ) {
return $links;
}

// Add link as the first plugin action link.
$settings_link = sprintf(
‘<a href=”%s”>%s</a>’,
esc_url( add_query_arg( ‘page’, PERFLAB_SCREEN, admin_url( ‘options-general.php’ ) ) ),
esc_html__( ‘Settings’, ‘performance-lab’ )
);

return array_merge(
array( ‘settings’ => $settings_link ),
$links
);
}

/**
* Dismisses notification pointer after verifying nonce.
*
* This function adds a nonce check before dismissing perflab-admin-pointer
* It runs before the dismiss-wp-pointer AJAX action is performed.
*
* @since 2.3.0
*/
function perflab_dismiss_wp_pointer_wrapper(): void {
if ( isset( $_POST[‘pointer’] ) && ‘perflab-admin-pointer’ !== $_POST[‘pointer’] ) {
// Another plugin’s pointer, do nothing.
return;
}
check_ajax_referer( ‘dismiss_pointer’ );
}
add_action( ‘wp_ajax_dismiss-wp-pointer’, ‘perflab_dismiss_wp_pointer_wrapper’, 0 );

/**
* Gets the path to a script or stylesheet.
*
* @since 3.7.0
*
* @param string $src_path Source path.
* @param string|null $min_path Minified path. If not supplied, then ‘.min’ is injected before the file extension in the source path.
* @return string URL to script or stylesheet.
*/
function perflab_get_asset_path( string $src_path, ?string $min_path = null ): string {
if ( null === $min_path ) {
// Note: wp_scripts_get_suffix() is not used here because we need access to both the source and minified paths.
$min_path = (string) preg_replace( ‘/(?=\.\w+$)/’, ‘.min’, $src_path );
}

$force_src = false;
if ( WP_DEBUG && ! file_exists( trailingslashit( PERFLAB_PLUGIN_DIR_PATH ) . $min_path ) ) {
$force_src = true;
wp_trigger_error(
__FUNCTION__,
sprintf(
/* translators: %s is the minified asset path */
__( ‘Minified asset has not been built: %s’, ‘performance-lab’ ),
$min_path
),
E_USER_WARNING
);
}

if ( SCRIPT_DEBUG || $force_src ) {
return $src_path;
}

return $min_path;
}

/**
* Callback function to handle admin scripts.
*
* @since 2.8.0
* @since 3.0.0 Renamed to perflab_enqueue_features_page_scripts().
*/
function perflab_enqueue_features_page_scripts(): void {
// These assets are needed for the “Learn more” popover.
wp_enqueue_script( ‘thickbox’ );
wp_enqueue_style( ‘thickbox’ );
wp_enqueue_script( ‘plugin-install’ );

// Enqueue plugin activate AJAX script and localize script data.
wp_enqueue_script(
‘perflab-plugin-activate-ajax’,
plugins_url( perflab_get_asset_path( ‘includes/admin/plugin-activate-ajax.js’ ), PERFLAB_MAIN_FILE ),
array( ‘wp-i18n’, ‘wp-a11y’, ‘wp-api-fetch’ ),
PERFLAB_VERSION,
true
);
}

/**
* Sanitizes a plugin slug.
*
* @since 3.1.0
*
* @param mixed $unsanitized_plugin_slug Unsanitized plugin slug.
* @return string|null Validated and sanitized slug or else null.
*/
function perflab_sanitize_plugin_slug( $unsanitized_plugin_slug ): ?string {
if ( in_array( $unsanitized_plugin_slug, perflab_get_standalone_plugins(), true ) ) {
return $unsanitized_plugin_slug;
} else {
return null;
}
}

/**
* Callback for handling installation/activation of plugin.
*
* @since 3.0.0
*/
function perflab_install_activate_plugin_callback(): void {
check_admin_referer( ‘perflab_install_activate_plugin’ );

require_once ABSPATH . ‘wp-admin/includes/plugin.php’;
require_once ABSPATH . ‘wp-admin/includes/plugin-install.php’;
require_once ABSPATH . ‘wp-admin/includes/class-wp-upgrader.php’;
require_once ABSPATH . ‘wp-admin/includes/class-wp-ajax-upgrader-skin.php’;

if ( ! isset( $_GET[‘slug’] ) ) {
wp_die( esc_html__( ‘Missing required parameter.’, ‘performance-lab’ ) );
}

$plugin_slug = perflab_sanitize_plugin_slug( wp_unslash( $_GET[‘slug’] ) );
if ( null === $plugin_slug ) {
wp_die( esc_html__( ‘Invalid plugin.’, ‘performance-lab’ ) );
}

// Install and activate the plugin and its dependencies.
$result = perflab_install_and_activate_plugin( $plugin_slug );
if ( $result instanceof WP_Error ) {
wp_die( wp_kses_post( $result->get_error_message() ) );
}

$url = add_query_arg(
array(
‘page’ => PERFLAB_SCREEN,
‘activate’ => $plugin_slug,
),
admin_url( ‘options-general.php’ )
);

if ( wp_safe_redirect( $url ) ) {
exit;
}
}
add_action( ‘admin_action_perflab_install_activate_plugin’, ‘perflab_install_activate_plugin_callback’ );

/**
* Callback function to handle admin inline style.
*
* @since 3.0.0
*/
function perflab_print_features_page_style(): void {
?>
<style>
.plugin-card .name,
.plugin-card .desc, /* For WP <6.5 versions */
.plugin-card .desc > p {
margin-left: 0;
}
.plugin-card-top {
/* This is required to ensure the Settings link does not extend below the bottom of a plugin card on a wide screen. */
min-height: 90px;
}
@media screen and (max-width: 782px) {
.plugin-card-top {
/* Same reason as above, but now the button is taller to make it easier to tap on touch screens. */
min-height: 110px;
}
}
.plugin-card .perflab-plugin-experimental {
font-size: 80%;
font-weight: normal;
}

@media screen and (max-width: 1100px) and (min-width: 782px), (max-width: 480px) {
.plugin-card .action-links {
margin-left: auto;
}
/* Make sure the settings link gets spaced out from the Learn more link. */
.plugin-card .plugin-action-buttons > li:nth-child(3) {
margin-left: 2ex;
border-left: solid 1px;
padding-left: 2ex;
}
}
</style>
<?php
}

/**
* Callback function hooked to admin_notices to render admin notices on the plugin’s screen.
*
* @since 2.8.0
*/
function perflab_plugin_admin_notices(): void {
if ( ! current_user_can( ‘install_plugins’ ) ) {
$are_all_plugins_installed = true;
$installed_plugin_slugs = array_map(
static function ( $name ) {
return strtok( $name, ‘/’ );
},
array_keys( get_plugins() )
);
foreach ( perflab_get_standalone_plugin_version_constants() as $plugin_slug => $constant_name ) {
if ( ! in_array( $plugin_slug, $installed_plugin_slugs, true ) ) {
$are_all_plugins_installed = false;
break;
}
}

if ( ! $are_all_plugins_installed ) {
wp_admin_notice(
esc_html__( ‘Due to your site\’s configuration, you may not be able to activate the performance features, unless the underlying plugin is already installed. Please install the relevant plugins manually.’, ‘performance-lab’ ),
array(
‘type’ => ‘warning’,
)
);
return;
}
}

$activated_plugin_slug = null;
if ( isset( $_GET[‘activate’] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$activated_plugin_slug = perflab_sanitize_plugin_slug( wp_unslash( $_GET[‘activate’] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
}

if ( null !== $activated_plugin_slug ) {
$message = __( ‘Feature activated.’, ‘performance-lab’ );

$plugin_settings_url = perflab_get_plugin_settings_url( $activated_plugin_slug );
if ( null !== $plugin_settings_url ) {
/* translators: %s is the settings URL */
$message .= ‘ ‘ . sprintf( __( ‘Review <a href=”%s”>settings</a>.’, ‘performance-lab’ ), esc_url( $plugin_settings_url ) );
}

wp_admin_notice(
wp_kses(
$message,
array(
‘a’ => array(
‘href’ => array(),
),
)
),
array(
‘type’ => ‘success’,
‘dismissible’ => true,
)
);
}
}

/**
* Gets the URL to the plugin settings screen if one exists.
*
* @since 3.1.0
*
* @param string $plugin_slug Plugin slug passed to generate the settings link.
* @return string|null Either the plugin settings URL or null if not available.
*/
function perflab_get_plugin_settings_url( string $plugin_slug ): ?string {
$plugin_file = null;

foreach ( array_keys( get_plugins() ) as $file ) {
if ( strtok( $file, ‘/’ ) === $plugin_slug ) {
$plugin_file = $file;
break;
}
}

if ( null === $plugin_file ) {
return null;
}

/** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */
$plugin_links = apply_filters( “plugin_action_links_{$plugin_file}”, array() );

if ( ! is_array( $plugin_links ) || ! array_key_exists( ‘settings’, $plugin_links ) ) {
return null;
}

$p = new WP_HTML_Tag_Processor( $plugin_links[‘settings’] );
if ( ! $p->next_tag( array( ‘tag_name’ => ‘A’ ) ) ) {
return null;
}
$href = $p->get_attribute( ‘href’ );
if ( is_string( $href ) && ” !== $href ) {
return $href;
}

return null;
}

/**
* Prints the Performance Lab install notice after each feature plugin’s row meta.
*
* @since 3.2.0
*
* @param string $plugin_file Plugin file.
*/
function perflab_print_row_meta_install_notice( string $plugin_file ): void {
if ( ! in_array( strtok( $plugin_file, ‘/’ ), perflab_get_standalone_plugins(), true ) ) {
return;
}

$message = sprintf(
/* translators: %s: link to Performance Lab settings screen */
__( ‘This plugin is installed by <a href=”%s”>Performance Lab</a>.’, ‘performance-lab’ ),
esc_url( add_query_arg( ‘page’, PERFLAB_SCREEN, admin_url( ‘options-general.php’ ) ) )
);

printf(
‘<div class=”requires”><p>%1$s</p></div>’,
wp_kses( $message, array( ‘a’ => array( ‘href’ => array() ) ) )
);
}
add_action( ‘after_plugin_row_meta’, ‘perflab_print_row_meta_install_notice’ );

Shipping & Delivery

How much does shipping cost?

We are glad to bring our customers great value and service. That’s why we provide fast shipping from our Fulfillment Center in California by UPS and USPS.

What countries are you delivering to?

As of now, we’re delivering to the United States only.

How can I track my parcel?

Once your parcel has left our Fulfillment Center, you will receive an email with a tracking number to monitor your parcel movements.

Can you ship my order to a business address?

Yes, you can write your business address in your order details if it’s more convenient to you.

Can you ship my order to a PO Box address?

Yes, you can select delivery to a PO Box if it’s more convenient to you.

Can you ship my order to APO or FPO military addresses?

Yes, we ship anywhere in the United States, and to all US territories and military APO/FPO addresses.

What happens to my parcel if it is delivered while I’m not there?

Depending on the destination and the package size, your parcel will be left in your mailbox or on your porch, or it may be left with a neighbour.

Refunds & Returns

Can I cancel my order?

All orders can be canceled until they are shipped. If your order has been paid and you need to change or cancel it, please contact us within 12 hours of placing it.

Can I get a refund if something is wrong with my order?

Within 14 days of receiving the parcel, you can ask us for:

  • A full refund if you don’t receive your order
  • A full refund if your order does not arrive within the guaranteed time (1-3 business days not including 1 business day processing time)
  • A full or partial refund if the item is not as described

Full refunds are not available under the following circumstances:

  • Your order does not arrive due to factors within your control (e.g. providing the wrong shipping address)
  • Your order does not arrive due to exceptional circumstances outside our control (e.g. not cleared by customs, delayed by a natural disaster).

All our products are backed with a 14-day money back guarantee. Just send us a message on the Contact Us page and we will refund the purchase price.

Can I return an item for an exchange instead of a refund?

Yes, you can! Kindly Contact Us form to discuss the details with us.

Can I return my purchase?

All our products are backed with a 14-day money back guarantee. Just contact us and we will refund the purchase price.

If you are not satisfied with your purchase, you can return it for a replacement or refund. No questions asked! You only should return it at your expense.

Please contact us first and we will guide you through the steps. We are always ready to give you the best solutions!

Please do not send your purchase back to us unless we authorize you to do so.

Are there any items I can’t return?

Hygiene and our customers’ safety is our top priority, which is why there are specific types of products that can’t be returned such as:

  • Face and body products if opened, used, or have a broken protective seal
  • Underwear if the hygiene seal is not intact or any labels have been broken
  • Swimwear if the hygiene seal is not intact or any labels have been broken
  • Pierced jewellery if the seal has been tampered with or is broken

Customer Reviews

There are no reviews yet

Write a Review

We Think You’ll Love

Top picks just for you

Fast Worldwide Shipping
Get your orders quickly with our expedited shipping services available globally
Secure Payment Options
We offer safe and diverse payment methods including credit cards and PayPal
Free theme updates
The smart timer encourages a full 2 minutes brushing time as recommended by dentists.
Exclusive Offers
Sign up to receive special promotions, discounts, and insider-only deals
High-Quality Products
We source the finest products to ensure your complete satisfaction
Easy Returns
Hassle-free returns process to ensure you are satisfied with every purchase
Friendly Support
Our friendly team is here to assist you with a smile, making your experience enjoyable
Top

Yay! 10% Off Just for You!

Join our community and enjoy 10% off your first order. Subscribe for exclusive deals!

Shopping cart

×