8
Validation results

Shopkeeper

Shopkeeper

WordPress 4.9.8 theme
8
Critical alerts
  1. Malware : Operations on file system file_get_contents was found in the file functions.php
    Line 228: $theme_options_json = file_get_contents( dirname( __FILE__ ) . '/_presets/'.$preset.'.json' );
    file_get_contents was found in the file ocdi-setup.php
    Line 65: $rsp = file_get_contents( get_template_directory() . '/inc/demo/demo-config.json' 
    file_get_contents was found in the file helpers.php
    Line 107: /*if (function_exists('file_get_contents') && ($url_get_contents_data == false))
    Line 109: $url_get_contents_data = file_get_contents($file_path);
    fopen was found in the file helpers.php
    Line 112: /*if (function_exists('fopen') && function_exists('stream_get_contents') && ($url_get_contents_dat
    Line 114: $handle = fopen ($file_path, 'r');
  2. Admin menu : Themes should use add_theme_page() for adding admin pages. File class-tgm-plugin-activation.php :
    Line 731: $this->page_hook = call_user_func( 'add_submenu_page', $args['parent_slug'], $args['page_title'], $args['menu_t
  3. Hidden admin bar : Hidden admin Bar Themes should not hide admin bar. Detected in file : functions.php.
  4. Included plugins : Zip file found Plugins are not allowed in themes. The zip file found was ._js_composer.zip js_composer.zip.
Warning
  1. theme tags : Presence of bad theme tagsFound wrong tag in style.css header.
  2. Text domain : Incorrect use of translation functions.Found a translation function that is missing a text-domain. Function __, with the arguments '%s (Invalid)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function __, with the arguments '%s (Pending)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'sub item' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function esc_attr_e, with the arguments 'Move up' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function esc_attr_e, with the arguments 'Move down' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function esc_attr_e, with the arguments 'Edit menu item' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Edit' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'URL' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Navigation Label' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Title Attribute' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Open link in a new tab' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'CSS Classes (optional)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Link Relationship (XFN)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Description' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'The description will be displayed in the menu if the current theme supports it.' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Background URL' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Move' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Up one' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Down one' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'To the top' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function __, with the arguments 'Original: %s' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Remove' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Cancel' in file edit_custom_walker.php.More than one text-domain is being used in this theme. This means the theme will not be compatible with WordPress.org language packs. The domains found are shopkeeper, kirki, woocommerce, the-hanger, tgmpa.
  3. Plugin territory : Plugin territory functionalitiesThe theme uses the register_post_type() function, which is plugin-territory functionality.The theme uses the add_shortcode() function. Custom post-content shortcodes are plugin-territory functionality.
  4. Hidden admin bar : Hidden admin Bar in CSSThemes should not hide admin bar. Detected in file styles.css.
  5. Editor style : Presence of editor styleNo reference to add_editor_style() was found in the theme. It is recommended that the theme implements editor styling, so as to make the editor content match the resulting post output in the theme, for a better user experience.
  6. I18N implementation : Proper use of _e(Possible variable $shopkeeper_theme_options found in translation function in header-topbar.php. Translation function calls should not contain PHP variables.
    Line 14: <div class='site-top-message'><?php if ( isset($shopkeeper_theme_options['top_bar_text']) ) _e( $shopkeeper_theme_options['top_bar_text'], 'shopkeeper' ); ?></div> 
    Possible variable $shopkeeper_theme_options found in translation function in footer.php. Translation function calls should not contain PHP variables.
    Line 63: <?php _e( $shopkeeper_theme_options['footer_copyright_text'], 'shopkeeper' ); ?>
    Possible variable $shopkeeper_theme_options found in translation function in content-product.php. Translation function calls should not contain PHP variables.
    Line 106: <div class='out_of_stock_badge_loop'><?php _e( $shopkeeper_theme_options['out_of_stock_label'], 'woocommerce' ); ?></d
    Possible variable $shopkeeper_theme_options found in translation function in content-single-product-style-3.php. Translation function calls should not contain PHP variables.
    Line 135: <div class='out_of_stock_badge_single <?php if (!$product->is_on_sale()) : ?>first_position<?php endif; ?>'><?php _e( $shopkeeper_theme_options['out_of_stock_label'], 'woocommerce' ); ?> 
    Possible variable $shopkeeper_theme_options found in translation function in content-single-product-style-4.php. Translation function calls should not contain PHP variables.
    Line 133: <div class='out_of_stock_badge_single <?php if (!$product->is_on_sale()) : ?>first_position<?php endif; ?>'><?php _e( $shopkeeper_theme_options['out_of_stock_label'], 'woocommerce' ); ?> 
    Possible variable $shopkeeper_theme_options found in translation function in quick-view.php. Translation function calls should not contain PHP variables.
    Line 110: <div class='out_of_stock_badge_single <?php if (!$product->is_on_sale()) : ?>first_position<?php endif; ?>'><?php _e( $shopkeeper_theme_options['out_of_stock_label'], 'woocommerce' ); ?> 
    Possible variable $shopkeeper_theme_options found in translation function in content-single-product-style-2.php. Translation function calls should not contain PHP variables.
    Line 136: <div class='out_of_stock_badge_single <?php if (!$product->is_on_sale()) : ?>first_position<?php endif; ?>'><?php _e( $shopkeeper_theme_options['out_of_stock_label'], 'woocommerce' ); ?> 
    Possible variable $shopkeeper_theme_options found in translation function in content-single-product-default.php. Translation function calls should not contain PHP variables.
    Line 148: <div class='out_of_stock_badge_single <?php if (!$product->is_on_sale()) : ?>first_position<?php endif; ?>'><?php _e( $shopkeeper_theme_options['out_of_stock_label'], 'woocommerce' ); ?> 
    Possible variable $plugin found in translation function in class-gbt-install-wizard.php. Translation function calls should not contain PHP variables.
    Line 283: <!-- <span class='plugin-description'><?php echo isset( $plugin['description'] )? esc_html_e( $plugin['description'], 'shopkeeper' ) : '';?></span> -->
  7. I18N implementation : Proper use of ___all(Possible variable $shopkeeper_theme_options found in translation function in footer.php. Translation function calls should not contain PHP variables.
    Line 234: echo '<div class='minicart-message'>'. esc_html__( $shopkeeper_theme_options['main_header_minicart_message'], 'shopkeeper'
    Possible variable $shopkeeper_theme_options found in translation function in functions.php. Translation function calls should not contain PHP variables.
    Line 884: echo '<span class='onsale'>'. __( $shopkeeper_theme_options['sale_label'], 'woocommerce' ) .'</span>';
  8. I18N implementation : Proper use of esc_html___all(Possible variable $shopkeeper_theme_options found in translation function in footer.php. Translation function calls should not contain PHP variables.
    Line 234: echo '<div class='minicart-message'>'. esc_html__( $shopkeeper_theme_options['main_header_minicart_message'], 'sho
  9. I18N implementation : Proper use of esc_html_e(Possible variable $plugin found in translation function in class-gbt-install-wizard.php. Translation function calls should not contain PHP variables.
    Line 283: <!-- <span class='plugin-description'><?php echo isset( $plugin['description'] )? esc_html_e( $plugin['description'], 'shopkeeper' ) : '';?></span> -->
  10. CSS files : Presence of .bypostauthor class.bypostauthor css class is needed in theme css.
  11. CSS files : Presence of .screen-reader-text class.screen-reader-text css class is needed in your theme css. See : the Codex for an example implementation.
  12. Screenshot : Screenshot fileScreenshot size is 880x660px. Screenshot size should be 1200x900, to account for HiDPI displays. Any 4:3 image size is acceptable, but 1200x900 is preferred.Bad screenshot file extension ! File screenshot.png is not an actual JPG file. Detected type was : "image/png".
Tip-off
  1. favicon presence : Favicon managementPossible Favicon found in functions.php. Favicons are handled by the Site Icon setting in the customizer since version 4.3.
  2. Optional files : Presence of rtl stylesheet rtl.cssThis theme does not contain optional file rtl.php.
  3. Optional files : Presence of front page template file front-page.phpThis theme does not contain optional file front-page.php.
  4. Optional files : Presence of home template file home.phpThis theme does not contain optional file home.php.
  5. Optional files : Presence of category template file category.phpThis theme does not contain optional file category.php.
  6. Optional files : Presence of tag template file tag.phpThis theme does not contain optional file tag.php.
  7. Optional files : Presence of term template file taxonomy.phpThis theme does not contain optional file taxonomy.php.
  8. Optional files : Presence of author template file author.phpThis theme does not contain optional file author.php.
  9. Optional files : Presence of date/time template file date.phpThis theme does not contain optional file date.php.
  10. Optional files : Presence of archive template file archive.phpThis theme does not contain optional file archive.php.
  11. Optional files : Presence of attachment template file attachment.phpThis theme does not contain optional file attachment.php.
  12. Use of includes : Use of include or requireThe theme appears to use include or require : header.php
    Line 41: include(locate_template('header-loader.php'));
    Line 131: <?php include(locate_template('header-topbar.php')); ?>						
    Line 137: <?php include(locate_template('header-default.php')); ?>
    Line 139: <?php include(locate_template('header-centered-2menus.php')); ?>
    Line 141: <?php include(locate_template('header-centered-menu-under.php')); ?>
    Line 146: <?php include(locate_template('header-default.php')); ?>
    If these are being used to include separate sections of a template from independent files, then get_template_part() should be used instead. Otherwise, use include_once or require_once instead.
    The theme appears to use include or require : index.php
    Line 12: include(locate_template('index-layout-1.php'));
    Line 15: include(locate_template('index-layout-2.php'));
    Line 18: include(locate_template('index-layout-3.php'));
    Line 21: include(locate_template('index-layout-1.php'));
    If these are being used to include separate sections of a template from independent files, then get_template_part() should be used instead. Otherwise, use include_once or require_once instead.
    The theme appears to use include or require : custom-menu.php
    Line 105: include_once( 'edit_custom_walker.php' );
    Line 106: include_once( 'custom_walker.php' );
    If these are being used to include separate sections of a template from independent files, then get_template_part() should be used instead. Otherwise, use include_once or require_once instead.

This is a ThemeForest theme. Since Themeforest items are all checked by a human before they appear on their website, ThemeForest verification rules are more permissive than themecheck's and can give a better verification score ( Themeforest requirements ).

53
Critical alerts
  1. Hidden admin bar : Hidden admin Bar Themes should not hide admin bar. Detected in file : functions.php.
  2. Included plugins : Zip file found Plugins are not allowed in themes. The zip file found was ._js_composer.zip js_composer.zip.
Warning
  1. theme tags : Presence of bad theme tagsFound wrong tag in style.css header.
  2. Text domain : Incorrect use of translation functions.Found a translation function that is missing a text-domain. Function __, with the arguments '%s (Invalid)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function __, with the arguments '%s (Pending)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'sub item' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function esc_attr_e, with the arguments 'Move up' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function esc_attr_e, with the arguments 'Move down' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function esc_attr_e, with the arguments 'Edit menu item' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Edit' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'URL' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Navigation Label' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Title Attribute' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Open link in a new tab' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'CSS Classes (optional)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Link Relationship (XFN)' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Description' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'The description will be displayed in the menu if the current theme supports it.' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Background URL' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Move' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Up one' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Down one' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'To the top' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function __, with the arguments 'Original: %s' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Remove' in file edit_custom_walker.php.Found a translation function that is missing a text-domain. Function _e, with the arguments 'Cancel' in file edit_custom_walker.php.More than one text-domain is being used in this theme. This means the theme will not be compatible with WordPress.org language packs. The domains found are shopkeeper, kirki, woocommerce, the-hanger, tgmpa.
  3. Plugin territory : Plugin territory functionalitiesThe theme uses the register_post_type() function, which is plugin-territory functionality.The theme uses the add_shortcode() function. Custom post-content shortcodes are plugin-territory functionality.
  4. Hidden admin bar : Hidden admin Bar in CSSThemes should not hide admin bar. Detected in file styles.css.
  5. CSS files : Presence of .bypostauthor class.bypostauthor css class is needed in theme css.
  6. CSS files : Presence of .screen-reader-text class.screen-reader-text css class is needed in your theme css. See : the Codex for an example implementation.
  7. Screenshot : Screenshot fileScreenshot size is 880x660px. Screenshot size should be 1200x900, to account for HiDPI displays. Any 4:3 image size is acceptable, but 1200x900 is preferred.Bad screenshot file extension ! File screenshot.png is not an actual JPG file. Detected type was : "image/png".
Tip-off
  1. favicon presence : Favicon managementPossible Favicon found in functions.php. Favicons are handled by the Site Icon setting in the customizer since version 4.3.
  2. Optional files : Presence of rtl stylesheet rtl.cssThis theme does not contain optional file rtl.php.
  3. Optional files : Presence of front page template file front-page.phpThis theme does not contain optional file front-page.php.
  4. Optional files : Presence of home template file home.phpThis theme does not contain optional file home.php.
  5. Optional files : Presence of category template file category.phpThis theme does not contain optional file category.php.
  6. Optional files : Presence of tag template file tag.phpThis theme does not contain optional file tag.php.
  7. Optional files : Presence of term template file taxonomy.phpThis theme does not contain optional file taxonomy.php.
  8. Optional files : Presence of author template file author.phpThis theme does not contain optional file author.php.
  9. Optional files : Presence of date/time template file date.phpThis theme does not contain optional file date.php.
  10. Optional files : Presence of archive template file archive.phpThis theme does not contain optional file archive.php.
  11. Optional files : Presence of attachment template file attachment.phpThis theme does not contain optional file attachment.php.
  12. Use of includes : Use of include or requireThe theme appears to use include or require : header.php
    Line 41: include(locate_template('header-loader.php'));
    Line 131: <?php include(locate_template('header-topbar.php')); ?>						
    Line 137: <?php include(locate_template('header-default.php')); ?>
    Line 139: <?php include(locate_template('header-centered-2menus.php')); ?>
    Line 141: <?php include(locate_template('header-centered-menu-under.php')); ?>
    Line 146: <?php include(locate_template('header-default.php')); ?>
    If these are being used to include separate sections of a template from independent files, then get_template_part() should be used instead. Otherwise, use include_once or require_once instead.
    The theme appears to use include or require : index.php
    Line 12: include(locate_template('index-layout-1.php'));
    Line 15: include(locate_template('index-layout-2.php'));
    Line 18: include(locate_template('index-layout-3.php'));
    Line 21: include(locate_template('index-layout-1.php'));
    If these are being used to include separate sections of a template from independent files, then get_template_part() should be used instead. Otherwise, use include_once or require_once instead.
    The theme appears to use include or require : custom-menu.php
    Line 105: include_once( 'edit_custom_walker.php' );
    Line 106: include_once( 'custom_walker.php' );
    If these are being used to include separate sections of a template from independent files, then get_template_part() should be used instead. Otherwise, use include_once or require_once instead.
Other checked themes