15
Résultats de validation

Porto

Porto

WordPress 6.6.2 theme
15
Ce thème n'est peut être pas libre. Themecheck ne distribue pas de thèmes commerciaux.
Alertes critiques
  1. Failles de sécurité : Utilisation de base64_decode() base64_decode trouvé dans le fichier porto-studio.php. 108: $block_content = base64_decode( $block['content'] );
  2. Code malveillant : Opérations sur système de fichiers file_get_contents trouvé dans le fichier importer-api.php. 144: $body = @file_get_contents( $source_path );fopen trouvé dans le fichier class.redux_helpers.php. 646: // $fp = fopen( $file, 'r' );fread trouvé dans le fichier class.redux_helpers.php. 649: // $file_data = fread( $fp, 8192 );fclose trouvé dans le fichier class.redux_helpers.php. 652: // fclose( $fp );
  3. Menu Admin : Les thèmes doivent utiliser add_theme_page () pour ajouter des pages admin. Fichier admin.php : 85: $welcome_screen = add_menu_page( 'Porto', 'Porto', 'administrator', 'porto', array( $this, 'wFichier admin.php : 86: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen87: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '89: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio90: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced92: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFichier admin.php : 86: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen87: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '89: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio90: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced92: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFichier admin.php : 86: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen87: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '89: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio90: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced92: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFichier admin.php : 86: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen87: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '89: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio90: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced92: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFichier admin.php : 86: $welcome = add_submenu_page( 'porto', __( 'Theme license', 'porto' ), __( 'Theme Licen87: $changelog = add_submenu_page( 'porto', __( 'Change Log', 'porto' ), __( 'Change Log', '89: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme Optio90: $theme_options = add_submenu_page( 'porto', __( 'Advanced Options', 'porto' ), __( 'Advanced92: $theme_options = add_submenu_page( 'porto', __( 'Theme Options', 'porto' ), __( 'Theme OptioFichier framework.php : 1270: // wrappers and need to be appened to using add_submenu_page.1322: 'add_submenu_page',1393: 'add_submenu_page',Fichier framework.php : 1270: // wrappers and need to be appened to using add_submenu_page.1322: 'add_submenu_page',1393: 'add_submenu_page',Fichier framework.php : 1360: 'add_menu_page',Fichier framework.php : 1270: // wrappers and need to be appened to using add_submenu_page.1322: 'add_submenu_page',1393: 'add_submenu_page',Fichier speed_optimize_wizard.php : 94: add_submenu_page( 'porto', esc_html__( 'Speed Optimize Wizard', 'porto' ), Fichier setup_wizard.php : 774: add_submenu_page( 'porto', esc_html__( 'Setup Wizard', 'porto' ), esc_html_
  4. Inclusion de plugin : Présence de fichier zip Les plugins ne sont pas autorisés dans les thèmes. Le fichier zip revslider.zip geodirectory-porto-theme-compatibility-pack.zip js_composer.zip porto-functionality.zip a été trouvé.
Attention
  1. tags du thème : Présence de tags inconnusTag inconnu woocommerce trouvé dans l'entête du fichier style.css.Tag inconnu corporate trouvé dans l'entête du fichier style.css.Tag inconnu ecommerce trouvé dans l'entête du fichier style.css.Tag inconnu responsive trouvé dans l'entête du fichier style.css.Le tag blue est obsolète, il ne doit pas figurer dans le header de style.css.Le tag black est obsolète, il ne doit pas figurer dans le header de style.css.Le tag green est obsolète, il ne doit pas figurer dans le header de style.css.Le tag white est obsolète, il ne doit pas figurer dans le header de style.css.Le tag light est obsolète, il ne doit pas figurer dans le header de style.css.Le tag dark est obsolète, il ne doit pas figurer dans le header de style.css.Le tag red est obsolète, il ne doit pas figurer dans le header de style.css.Le tag fixed-layout est obsolète, il ne doit pas figurer dans le header de style.css.Le tag responsive-layout est obsolète, il ne doit pas figurer dans le header de style.css.Les thèmes qui utilisent le tag accessibility-ready doivent concoder avec les règles de la revue d'accessibilité.
    Voir https://make.wordpress.org/themes/handbook/review/accessibility/
  2. Text domain : Utilisation incorrecte des fonctions de traduction.Une fonction de traduction utilisée sans text-domain. Fonction esc_html__, avec les arguments 'View %s' dans le fichier content-archive-event-list.php.Une fonction de traduction utilisée sans text-domain. Fonction __, avec les arguments 'Excerpt length is based on words or characters?' dans le fichier settings.php.Une fonction de traduction utilisée sans text-domain. Fonction esc_html__, avec les arguments 'View %s' dans le fichier content-archive-event-grid.php.Plusieurs text-domain sont utilisés dans le thème. Cela signifie que le thème n'est pas compatible avec les language packs de WordPress. Les domaines trouvés sont porto, woocommerce, js_composer, tgmpa, redux-framework.
  3. Balises courtes PHP : Présence de balises PHP courtesPrésence de balises PHP courtes dans le fichier parsedown.php. "Il est conseillé de ne pas les utiliser car elles ne sont seulement disponibles lors de l'activation de la directive de configuration short_open_tag du php.ini, ou si PHP a été configuré avec l'option --enable-short-tags" (php.net), ce qui n'est pas le cas sur de nombreux serveurs.653: if ( preg_match( '/^\[(.+?)\]:[ ]*<?(\S+?)>?(?:[ ]+['\'(](.+)['\')])?[ ]*$/', $Line['text'], $matches ) ) {
  4. Implémentation de l'internationalisation : Utilisation correcte de ___al(La variable $key a été trouvée dans une fonction de traduction dans le fichier speed_optimize_wizard.php . Les appels de fonctions de traduction ne doivent pas contenir de variables PHP.
  5. Screenshot : Copie d'écranLa taille du screenshot est 880x660px. La taille recommandée est 1200x900, pour prendre en compte les affichages HiDPI. Bien qu'une résolution de 1200x900 soit recommandée, toutes les images au format 4:3 sont acceptables.Mauvaise extension de fichier screenshot ! Le fichier screenshot.png n'est pas un véritable fichier JPG. Le type détecté est : "image/png".
Info
  1. Liens statiques : Présence de liens codés en durLien potentiellement codés en dur trouvé dans le fichier yit-pointers.php.72: '<h3> %s </h3> <p> %s </p> <p> %s <a href='http://yithemes.com/product-category/plugins/' target='_blank'>Yithemes.com90: '<h3> %s </h3> <p> %s </p> <p> %s <a href='http://yithemes.com/product-category/plugins/' target='_blank'>Yithemes.com72: '<h3> %s </h3> <p> %s </p> <p> %s <a href='http://yithemes.com/product-category/plugins/' target='_blank'>Yithemes.com90: '<h3> %s </h3> <p> %s </p> <p> %s <a href='http://yithemes.com/product-category/plugins/' target='_blank'>Yithemes.comLien potentiellement codés en dur trouvé dans le fichier class-tgm-plugin-activation.php.2751: $action_links['register'] = '<span style='color:#666'>Please</span> <a href='admin.php?page=porto'>register</a> <span style='color:#666'>the theme</spanLien potentiellement codés en dur trouvé dans le fichier admin.php.41: $this->add_wp_toolbar_menu_item( $porto_parent_menu_title, false, admin_url( 'admin.php?page=porto' ), array( 'class' => 'porto-menu' ), 'porto' );48: $this->add_wp_toolbar_menu_item( __( 'Theme License', 'porto' ), 'porto', admin_url( 'admin.php?page=porto' ) );49: $this->add_wp_toolbar_menu_item( __( 'Change Log', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-changelog' ) );50: $this->add_wp_toolbar_menu_item( __( 'Setup Wizard', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-setup-wizard' ) );51: $this->add_wp_toolbar_menu_item( __( 'Speed Optimize Wizard', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-speed-optimize-wizard' ) );257: return new WP_Error( 'not_registerd', __( 'Please <a href='admin.php?page=porto'>register</a> Porto theme to get access to pre-built d365: <p>Please <a href='admin.php?page=porto'>register</a> porto theme to get access to pre-built d400: $('.themes .theme.active .theme-screenshot').after('<div class='notice update-message notice-error notice-alt'><p>Please <a href='admin.php?page=porto' class='button-link'>verify purchase</a> to get update41: $this->add_wp_toolbar_menu_item( $porto_parent_menu_title, false, admin_url( 'admin.php?page=porto' ), array( 'class' => 'porto-menu' ), 'porto' );48: $this->add_wp_toolbar_menu_item( __( 'Theme License', 'porto' ), 'porto', admin_url( 'admin.php?page=porto' ) );49: $this->add_wp_toolbar_menu_item( __( 'Change Log', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-changelog' ) );50: $this->add_wp_toolbar_menu_item( __( 'Setup Wizard', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-setup-wizard' ) );51: $this->add_wp_toolbar_menu_item( __( 'Speed Optimize Wizard', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-speed-optimize-wizard' ) );257: return new WP_Error( 'not_registerd', __( 'Please <a href='admin.php?page=porto'>register</a> Porto theme to get access to pre-built d365: <p>Please <a href='admin.php?page=porto'>register</a> porto theme to get access to pre-built d400: $('.themes .theme.active .theme-screenshot').after('<div class='notice update-message notice-error notice-alt'><p>Please <a href='admin.php?page=porto' class='button-link'>verify purchase</a> to get update41: $this->add_wp_toolbar_menu_item( $porto_parent_menu_title, false, admin_url( 'admin.php?page=porto' ), array( 'class' => 'porto-menu' ), 'porto' );48: $this->add_wp_toolbar_menu_item( __( 'Theme License', 'porto' ), 'porto', admin_url( 'admin.php?page=porto' ) );49: $this->add_wp_toolbar_menu_item( __( 'Change Log', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-changelog' ) );50: $this->add_wp_toolbar_menu_item( __( 'Setup Wizard', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-setup-wizard' ) );51: $this->add_wp_toolbar_menu_item( __( 'Speed Optimize Wizard', 'porto' ), 'porto', admin_url( 'admin.php?page=porto-speed-optimize-wizard' ) );257: return new WP_Error( 'not_registerd', __( 'Please <a href='admin.php?page=porto'>register</a> Porto theme to get access to pre-built d365: <p>Please <a href='admin.php?page=porto'>register</a> porto theme to get access to pre-built d400: $('.themes .theme.active .theme-screenshot').after('<div class='notice update-message notice-error notice-alt'><p>Please <a href='admin.php?page=porto' class='button-link'>verify purchase</a> to get updateLien potentiellement codés en dur trouvé dans le fichier welcome.php.88: <?php printf( esc_html__( 'Before you get started, please be sure to always check out %1$sthis documentation%2$s. We outline all kinds of good information, and provide you with all the details you need to use Porto.', 'porto' ), '<a href='http://www.portotheme.com/wordpress/porto/documentation' target='_blank'>',95: <a target='_blank' href='http://www.portotheme.com/wordpress/porto/documentation#changelog'><?php es92: <?php printf( esc_html__( 'If you are unable to find your answer in our documentation, we encourage you to contact us through %1$ssupport page%2$s with your site CPanel (or FTP) and WordPress admin details. We are very happy to help you and you will get reply from us more faster than you expected.', 'porto' ), '<a href='http://www.portotheme.com/support' target='_blank'>', '</a>' ); ?>Lien potentiellement codés en dur trouvé dans le fichier settings.php.802: 'desc' => sprintf( esc_html__( 'By using this option, you can increase page speed about 4 percent in %1$sGoogle PageSpeed Insights%2$s for both of mobile and desktop.', 'porto' ), '<a href='https://developers.google.com/speed/pagespeed/insights/' target='_blank'>',7610: 'desc' => __( 'Please input animation. Please reference <a href='http://daneden.github.io/animate.css/'>animate.css</a>. ex: fadeIn', 'porto7617: 'desc' => __( 'Please input animation. Please reference <a href='http://daneden.github.io/animate.css/'>animate.css</a>. ex: fadeOut', 'port7610: 'desc' => __( 'Please input animation. Please reference <a href='http://daneden.github.io/animate.css/'>animate.css</a>. ex: fadeIn', 'porto7617: 'desc' => __( 'Please input animation. Please reference <a href='http://daneden.github.io/animate.css/'>animate.css</a>. ex: fadeOut', 'portLien potentiellement codés en dur trouvé dans le fichier header-builder.php.675: <a href='https://youtu.be/pk2W281QUa8' class='button' target='_blank'><?php esc_htmlLien potentiellement codés en dur trouvé dans le fichier speed_optimize_wizard.php.505: <input type='checkbox' value='true' name='google_webfont' <?php echo isset( $porto_settings['google-webfont-loader'] ) ? checked( $porto_settings['google-webfont-loader'], true, false ) : ''; ?>> <?php printf( esc_html__( 'Enable %1$sWeb Font Loader%2$s for Google Fonts', 'porto' ), '<a href='https://developers.google.com/fonts/docs/webfont_loader' target='_blank'>',508: <p><?php printf( esc_html__( 'By using this option, you can increase page speed about 4 percent in %1$sGoogle PageSpeed Insights%2$s for both of mobile and desktop.', 'porto' ), '<a href='https://developers.google.com/speed/pagespeed/insights/' target='_blank'>',712: <a href='https://gtmetrix.com/leverage-browser-caching.html' target='_blank'><?php eLien potentiellement codés en dur trouvé dans le fichier setup_wizard.php.1694: <li class='documentation'><a href='http://www.portotheme.com/wordpress/porto/documentation'><?php esc_html_e( 1695: <li class='woocommerce documentation'><a href='https://docs.woocommerce.com/document/woocommerce-101-video-series/'><?php 1697: <li class='rating'><a href='http://themeforest.net/downloads'><?php esc_html_e( 'Leave an Item Rating',
  2. Fichiers optionnels : Présence du fichierde style pour les écritures de droite vers la gauche rtl.cssCe thème ne contient pas le fichier optionnel rtl.php.
  3. Fichiers optionnels : Présence du fichier-template fron-*page.phpCe thème ne contient pas le fichier optionnel front-page.php.
  4. Fichiers optionnels : Présence du fichier-template de page d'accueil home.phpCe thème ne contient pas le fichier optionnel home.php.
  5. Fichiers optionnels : Présence du fichier-template de catégorie category.phpCe thème ne contient pas le fichier optionnel category.php.
  6. Fichiers optionnels : Présence du fichier-template des tags tag.phpCe thème ne contient pas le fichier optionnel tag.php.
  7. Fichiers optionnels : Présence du fichier template de taxinomie taxonomy.phpCe thème ne contient pas le fichier optionnel taxonomy.php.
  8. Fichiers optionnels : Présence de du fichier-template des dates et heures date.phpCe thème ne contient pas le fichier optionnel date.php.
  9. Fichiers optionnels : Présence du fichier-template des pièces jointes attachment.phpCe thème ne contient pas le fichier optionnel attachment.php.
  10. Fichiers optionnels : Présence du fichier-template des images image.phpCe thème ne contient pas le fichier optionnel image.php.
  11. Utilisation d'includes : Utilisation de include ou de de requireLe thème semble utiliser include ou require : style.php 75: require_once( PORTO_LIB . '/lib/color-lib.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : style-internal.php 37: require_once( PORTO_LIB . '/lib/color-lib.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : layout.php 7: require_once( PORTO_FUNCTIONS . '/layout/breadcrumbs.php' );8: require_once( PORTO_FUNCTIONS . '/layout/page-title.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : woocommerce.php 6: require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou 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' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : class-dynamic-style.php 114: require_once( PORTO_DIR . '/style.php' );122: require_once( PORTO_DIR . '/style-internal.php' );138: require_once( PORTO_DIR . '/style-internal.php' );219: require_once( PORTO_ADMIN . '/scssphp/scss.inc.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : woocommerce-swatches.php 23: require 'classes/class-product-swatches-tab.php'; Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : lazy-load.php 57: require_once( PORTO_LIB . '/lib/color-lib.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : plugins.php 291: require_once( ABSPATH . 'wp-admin/includes/plugin.php' );298: include_once( WC()->plugin_path() . '/includes/wc-template-functions.php' ) Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : parsers.php 82: require_once( ABSPATH . '/wp-admin/includes/file.php' );388: require_once( ABSPATH . '/wp-admin/includes/file.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : porto-parsers.php 85: require_once( ABSPATH . '/wp-admin/includes/file.php' );393: require_once( ABSPATH . '/wp-admin/includes/file.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : importer-api.php 64: require_once( ABSPATH . '/wp-admin/includes/file.php' );160: require_once( ABSPATH . '/wp-admin/includes/file.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : porto-wordpress-importer.php 213: require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : wordpress-importer.php 172: require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : Functions.php 941: $mime = require('mime'); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : extension_custom_fonts.php 145: // require_once 'System.php'; // WordPress core file Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou 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'; Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : header-builder.php 172: include_once 'classes/simple-notice-control.php'; Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.Le thème semble utiliser include ou require : theme_options.php 9: require_once( PORTO_ADMIN . '/functions.php' );12: require_once( PORTO_ADMIN . '/ReduxCore/framework.php' );15: require_once( PORTO_ADMIN . '/theme_options/settings.php' );17: require_once( PORTO_ADMIN . '/theme_options/save_settings.php' ); Si ces fonctions sont utilisées pour inclure des sections séparées d'un modèle à partir de fichiers indépendants, alors get_template_part () doit être utilisé à la place.
Other checked themes