8
Validation results

Shopkeeper

Shopkeeper

WordPress 4.8.2 theme
8
Critical alerts
  1. Malware : Operations on file system file_get_contents was found in the file functions.php
    Line 183: $theme_options_json = file_get_contents( dirname( __FILE__ ) . '/_presets/'.$preset.'.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 admin.php :
    Line 19: $getbowtied_menu_welcome = add_menu_page(
    File admin.php :
    Line 37: add_submenu_page(
    Line 49: $getbowtied_welcome = add_submenu_page(
    File admin.php :
    Line 37: add_submenu_page(
    Line 49: $getbowtied_welcome = add_submenu_page(
  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.
Warning
  1. special URIs : Presence of bad theme tagsTheme URI and Author URI should not be the same.
  2. theme tags : Presence of bad theme tagsFound wrong tag in style.css header.
  3. Text domain : Incorrect use of translation functions.Found a translation function that has an incorrect number of arguments. Function _n, with the arguments '%s download remaining', '%s downloads remaining', downloads_remaining, 'woocommerce' in file my-downloads.php.Found a translation function that is missing a text-domain. Function __, with the arguments 'Customize' in file admin.php.Found a translation function that is missing a text-domain. Function __, with the arguments 'Customize' in file admin.php.Found a translation function that is missing a text-domain. Function __, with the arguments "Installation & Setup <span class='dashicons dashicons-minus'></span> Video Guide" in file welcome_theme.php.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, getbowtied, woocommerce, downloads_remaining, tgmpa, shopkeeer.
  4. 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.
  5. Hidden admin bar : Hidden admin Bar in CSSThemes should not hide admin bar. Detected in file theme.css.
  6. 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.
  7. 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 26: <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 137: <?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 112: <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 82: <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 82: <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 95: <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' ); ?></d
    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 83: <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 88: <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' ); ?>
  8. 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 324: echo '<div class='minicart-message'>'. esc_html__( $shopkeeper_theme_options['main_header_minicart_message'], 'getbowtied'
    Possible variable $shopkeeper_theme_options found in translation function in functions.php. Translation function calls should not contain PHP variables.
    Line 819: echo '<span class='onsale'>'. __( $shopkeeper_theme_options['sale_label'], 'woocommerce' ) .'</span>';
  9. 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 324: echo '<div class='minicart-message'>'. esc_html__( $shopkeeper_theme_options['main_header_minicart_message'], 'get
  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. Static links : Presence of hard-coded linksPossible hard-coded links were found in the file welcome_theme.php.
    Line 64: <br/><a href='http://shopkeeper.wp-theme.help/hc/en-us/articles/206678019-Getting-Started
  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 : class-kirki-control-gradient.php
    Line 98: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-control-typography.php
    Line 88: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-control-color.php
    Line 90: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-control-fontawesome.php
    Line 61: include( $json_path );
    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 : class-kirki-control-multicolor.php
    Line 89: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-helper.php
    Line 83: require_once( ABSPATH . '/wp-admin/includes/file.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 : header.php
    Line 42: include(locate_template('header-loader.php'));
    Line 137: <?php include(locate_template('header-topbar.php')); ?>						
    Line 143: <?php include(locate_template('header-default.php')); ?>
    Line 145: <?php include(locate_template('header-centered-2menus.php')); ?>
    Line 147: <?php include(locate_template('header-centered-menu-under.php')); ?>
    Line 152: <?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 : product-image.php
    Line 28: require_once('product-image-default.php');
    Line 31: require_once('product-image-style-2.php');
    Line 34: require_once('product-image-style-3.php');
    Line 37: require_once('product-image-style-4.php');
    Line 40: require_once('product-image-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 : admin.php
    Line 61: require_once 'welcome_theme.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 : welcome_theme.php
    Line 4: include_once( ABSPATH . 'wp-admin/includes/plugin.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 ).

52
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.
Warning
  1. special URIs : Presence of bad theme tagsTheme URI and Author URI should not be the same.
  2. theme tags : Presence of bad theme tagsFound wrong tag in style.css header.
  3. Text domain : Incorrect use of translation functions.Found a translation function that has an incorrect number of arguments. Function _n, with the arguments '%s download remaining', '%s downloads remaining', downloads_remaining, 'woocommerce' in file my-downloads.php.Found a translation function that is missing a text-domain. Function __, with the arguments 'Customize' in file admin.php.Found a translation function that is missing a text-domain. Function __, with the arguments 'Customize' in file admin.php.Found a translation function that is missing a text-domain. Function __, with the arguments "Installation & Setup <span class='dashicons dashicons-minus'></span> Video Guide" in file welcome_theme.php.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, getbowtied, woocommerce, downloads_remaining, tgmpa, shopkeeer.
  4. 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.
  5. Hidden admin bar : Hidden admin Bar in CSSThemes should not hide admin bar. Detected in file theme.css.
  6. CSS files : Presence of .bypostauthor class.bypostauthor css class is needed in theme css.
  7. 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.
  8. 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. Static links : Presence of hard-coded linksPossible hard-coded links were found in the file welcome_theme.php.
    Line 64: <br/><a href='http://shopkeeper.wp-theme.help/hc/en-us/articles/206678019-Getting-Started
  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 : class-kirki-control-gradient.php
    Line 98: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-control-typography.php
    Line 88: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-control-color.php
    Line 90: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-control-fontawesome.php
    Line 61: include( $json_path );
    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 : class-kirki-control-multicolor.php
    Line 89: *     @type string               $type            Control type. Core controls include 'text', 'checkbox',
    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 : class-kirki-helper.php
    Line 83: require_once( ABSPATH . '/wp-admin/includes/file.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 : header.php
    Line 42: include(locate_template('header-loader.php'));
    Line 137: <?php include(locate_template('header-topbar.php')); ?>						
    Line 143: <?php include(locate_template('header-default.php')); ?>
    Line 145: <?php include(locate_template('header-centered-2menus.php')); ?>
    Line 147: <?php include(locate_template('header-centered-menu-under.php')); ?>
    Line 152: <?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 : product-image.php
    Line 28: require_once('product-image-default.php');
    Line 31: require_once('product-image-style-2.php');
    Line 34: require_once('product-image-style-3.php');
    Line 37: require_once('product-image-style-4.php');
    Line 40: require_once('product-image-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 : admin.php
    Line 61: require_once 'welcome_theme.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 : welcome_theme.php
    Line 4: include_once( ABSPATH . 'wp-admin/includes/plugin.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