14
Validation results

Porto

Porto

WordPress 6.5.2 theme
14
This theme seems to be proprietary. Themecheck doesn't distribute commercial themes.
Critical alerts
  1. Security breaches : Use of base64_decode() Found base64_decode in file porto-studio.php. 133: $block_content = base64_decode( $block['content'] );
  2. Malware : Operations on file system fopen was found in the file class.redux_helpers.php 646: // $fp = fopen( $file, 'r' );fread was found in the file class.redux_helpers.php 649: // $file_data = fread( $fp, 8192 );fclose was found in the file class.redux_helpers.php 652: // fclose( $fp );file_get_contents was found in the file importer-api.php 149: $body = @file_get_contents( $source_path );
  3. Admin menu : Themes should use add_theme_page() for adding admin pages. File framework.php : 1270: // wrappers and need to be appened to using add_submenu_page.1322: 'add_submenu_page',1393: 'add_submenu_page',File framework.php : 1270: // wrappers and need to be appened to using add_submenu_page.1322: 'add_submenu_page',1393: 'add_submenu_page',File framework.php : 1360: 'add_menu_page',File framework.php : 1270: // wrappers and need to be appened to using add_submenu_page.1322: 'add_submenu_page',1393: 'add_submenu_page',File speed_optimize_wizard.php : 94: add_submenu_page( 'porto', esc_html__( 'Speed Optimize Wizard', 'porto' ), File setup_wizard.php : 853: add_submenu_page( 'porto', esc_html__( 'Setup Wizard', 'porto' ), esc_html_File admin.php : 87: $welcome_screen = add_menu_page( 'Porto', 'Porto', 'administrator', 'porto', array( $this, 'wFile admin.php : 88: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen89: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '91: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio92: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced94: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFile admin.php : 88: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen89: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '91: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio92: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced94: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFile admin.php : 88: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen89: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '91: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio92: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced94: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFile admin.php : 88: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen89: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '91: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio92: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced94: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFile admin.php : 88: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen89: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '91: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio92: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced94: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio
  4. Included plugins : Zip file found Plugins are not allowed in themes. The zip file found was revslider.zip porto-functionality.zip geodirectory-porto-theme-compatibility-pack.zip digital-agency.zip shop31.zip shop11.zip corporate-hosting.zip shop33.zip shop29.zip elementor-shop8.zip shop25.zip elementor-shop10.zip shop5.zip photography1.zip shop14.zip agency-onepage.zip shop32.zip blog5.zip rtl.zip barber.zip shop27.zip education.zip blog1.zip shop18.zip landing.zip corporate17.zip elementor-shop21.zip corporate5.zip seo.zip corporate12.zip band.zip restaurant.zip coffee.zip shop28.zip shop20.zip corporate20.zip wedding.zip shop17.zip medical.zip corporate7.zip resume.zip corporate16.zip shortcodes.zip elementor-shop18.zip corporate9.zip classic-light.zip event.zip elementor-shop13.zip photography2.zip shop1.zip classic-original.zip shop26.zip shop2.zip shop4.zip portfolio5.zip classic-color.zip elementor-shop14.zip corporate10.zip portfolio1.zip photography3.zip shop30.zip corporate3.zip corporate13.zip elementor-shop19.zip shop7.zip corporate18.zip portfolio2.zip blog2.zip law-firm.zip construction.zip shop3.zip shop22.zip shop6.zip elementor-shop9.zip classic-one-page.zip business-consulting.zip dark.zip elementor-shop17.zip agency-one-page.zip corporate6.zip app-landing.zip elementor-shop15.zip corporate11.zip shop23.zip corporate14.zip shop8.zip hotel.zip blog4.zip shop13.zip portfolio4.zip shop24.zip finance.zip shop15.zip gym.zip shop12.zip real-estate.zip church.zip corporate4.zip architecture.zip shop10.zip classic-video.zip shop21.zip elementor-shop16.zip corporate15.zip blog3.zip elementor-shop12.zip shop9.zip corporate1.zip shop16.zip portfolio3.zip sass.zip classic-video-light.zip corporate8.zip elementor-shop11.zip shop19.zip corporate19.zip insurance.zip corporate2.zip js_composer.zip.
Warning
  1. core scripts deregistered : Core scripts deregistrationFound wp_deregister_script in functions.php. Themes must not deregister core scripts. 681: //wp_deregister_script( 'isotope' );
  2. theme tags : Presence of bad theme tagsFound wrong tag woocommerce in style.css header.Found wrong tag corporate in style.css header.Found wrong tag ecommerce in style.css header.Found wrong tag responsive in style.css header.The tag blue has been deprecated, it must be removed from style.css header.The tag black has been deprecated, it must be removed from style.css header.The tag green has been deprecated, it must be removed from style.css header.The tag white has been deprecated, it must be removed from style.css header.The tag light has been deprecated, it must be removed from style.css header.The tag dark has been deprecated, it must be removed from style.css header.The tag red has been deprecated, it must be removed from style.css header.The tag fixed-layout has been deprecated, it must be removed from style.css header.The tag responsive-layout has been deprecated, it must be removed from style.css header.Themes that use the tag accessibility-ready will need to undergo an accessibility review.
    See https://make.wordpress.org/themes/handbook/review/accessibility/
  3. Text domain : Incorrect use of translation functions.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 porto, js_composer, woocommerce, redux-framework, tgmpa.
  4. PHP short tags : Presence of PHP short tagsPHP short tags were found in file parsedown.php. "This practice is discouraged because they are only available if enabled with short_open_tag php.ini configuration file directive, or if PHP was configured with the --enable-short-tags option" (php.net), which is not the case on many servers.653: if ( preg_match( '/^\[(.+?)\]:[ ]*<?(\S+?)>?(?:[ ]+['\'(](.+)['\')])?[ ]*$/', $Line['text'], $matches ) ) {
  5. I18N implementation : Proper use of ___all(Possible variable $key found in translation function in speed_optimize_wizard.php. Translation function calls should not contain PHP variables.
  6. 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. Optional files : Presence of rtl stylesheet rtl.cssThis theme does not contain optional file rtl.php.
  2. Optional files : Presence of front page template file front-page.phpThis theme does not contain optional file front-page.php.
  3. Optional files : Presence of home template file home.phpThis theme does not contain optional file home.php.
  4. Optional files : Presence of category template file category.phpThis theme does not contain optional file category.php.
  5. Optional files : Presence of tag template file tag.phpThis theme does not contain optional file tag.php.
  6. Optional files : Presence of term template file taxonomy.phpThis theme does not contain optional file taxonomy.php.
  7. Optional files : Presence of date/time template file date.phpThis theme does not contain optional file date.php.
  8. Optional files : Presence of archive template file archive.phpThis theme does not contain optional file archive.php.
  9. Optional files : Presence of attachment template file attachment.phpThis theme does not contain optional file attachment.php.
  10. Optional files : Presence of image template file image.phpThis theme does not contain optional file image.php.
  11. Use of includes : Use of include or requireThe theme appears to use include or require : extension_custom_fonts.php 145: // require_once 'System.php'; // WordPress core file 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 : framework.php 1547: require_once 'core/enqueue.php';2738: require_once 'core/enqueue.php';2796: require_once 'core/panel.php';3146: require_once 'core/panel.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 : theme_options.php 9: require_once( PORTO_ADMIN . '/functions.php' );12: require_once( PORTO_ADMIN . '/ReduxCore/framework.php' );14: require_once( PORTO_ADMIN . '/theme_options/settings.php' );16: require_once( PORTO_ADMIN . '/theme_options/save_settings.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 : Functions.php 941: $mime = require('mime'); 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-builder.php 174: include_once 'classes/simple-notice-control.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 : importer-api.php 68: require_once( ABSPATH . '/wp-admin/includes/file.php' );165: 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 : parsers.php 82: require_once( ABSPATH . '/wp-admin/includes/file.php' );388: 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 : porto-parsers.php 85: require_once( ABSPATH . '/wp-admin/includes/file.php' );393: 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 : wordpress-importer.php 174: require_once( ABSPATH . 'wp-admin/includes/upgrade.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 : porto-wordpress-importer.php 215: require_once( ABSPATH . 'wp-admin/includes/upgrade.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 : plugins.php 300: require_once( ABSPATH . 'wp-admin/includes/plugin.php' );307: include_once( WC()->plugin_path() . '/includes/wc-template-functions.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 : lazy-load.php 57: require_once( PORTO_LIB . '/lib/color-lib.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 : woocommerce-swatches.php 23: require 'classes/class-product-swatches-tab.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 : layout.php 7: require_once( PORTO_FUNCTIONS . '/layout/breadcrumbs.php' );8: require_once( PORTO_FUNCTIONS . '/layout/page-title.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 : content_type.php 2: require_once( PORTO_FUNCTIONS . '/content_type/portfolio_like.php' );3: require_once( PORTO_FUNCTIONS . '/content_type/blog_like.php' );4: require_once( PORTO_FUNCTIONS . '/content_type/meta_values.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 : class-dynamic-style.php 121: require_once( PORTO_DIR . '/style.php' );129: require_once( PORTO_DIR . '/style-internal.php' );145: require_once( PORTO_DIR . '/style-internal.php' );245: require_once( PORTO_ADMIN . '/scssphp/scss.inc.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 : woocommerce.php 9: require_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 : style-internal.php 34: require_once( PORTO_LIB . '/lib/color-lib.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 : style.php 75: require_once( PORTO_LIB . '/lib/color-lib.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