WordPress : Remplacement d’un dossier de thème parent dans le thème enfant

Publié par Jean-Michel le

J’ai un thème parent qui fait référence à une image dans le imgdossier du thème comme ceci ;

<button id="buy" type="submit"><img src="<?php bloginfo('template_directory'); ?>/img/Buy-Now-Button.jpg" border="0" width="160" height="47" title="" alt="Buy One" style="cursor:pointer;"></button>

Cependant, je pensais que si j’activais un thème enfant et que, dans ce thème enfant, il y avait un autre imgdossier avec un bouton Buy-Now-Button.jpg différent, celui-ci serait utilisé à la place de celui du parent.

Mon objectif est de permettre aux utilisateurs d’utiliser leur propre bouton Acheter maintenant s’ils le souhaitent simplement en le plaçant dans le dossier img du thème enfant, est-ce que je procède de la bonne manière ?

Solution n°1 trouvée

Il y a de nouvelles fonctions à bord, enfin des noms intuitifs.
get_parent_theme_file_uriet get_theme_file_uri.

Vous pouvez l’utiliser à la place de get_stylesheet_directory_uri().

File: wp-includes/link-template.php
4026: /**
4027:  * Retrieves the URL of a file in the theme.
4028:  *
4029:  * Searches in the stylesheet directory before the template directory so themes
4030:  * which inherit from a parent theme can just override one file.
4031:  *
4032:  * @since 4.7.0
4033:  *
4034:  * @param string $file Optional. File to search for in the stylesheet directory.
4035:  * @return string The URL of the file.
4036:  */
4037: function get_theme_file_uri( $file = '' ) {
4038:   $file = ltrim( $file, '/' );
4039: 
4040:   if ( empty( $file ) ) {
4041:       $url = get_stylesheet_directory_uri();
4042:   } elseif ( file_exists( get_stylesheet_directory() . '/' . $file ) ) {
4043:       $url = get_stylesheet_directory_uri() . '/' . $file;
4044:   } else {
4045:       $url = get_template_directory_uri() . '/' . $file;
4046:   }
4047: 
4048:   /**
4049:    * Filters the URL to a file in the theme.
4050:    *
4051:    * @since 4.7.0
4052:    *
4053:    * @param string $url  The file URL.
4054:    * @param string $file The requested file to search for.
4055:    */
4056:   return apply_filters( 'theme_file_uri', $url, $file );
4057: }

Et

File: wp-includes/link-template.php
4059: /**
4060:  * Retrieves the URL of a file in the parent theme.
4061:  *
4062:  * @since 4.7.0
4063:  *
4064:  * @param string $file Optional. File to return the URL for in the template directory.
4065:  * @return string The URL of the file.
4066:  */
4067: function get_parent_theme_file_uri( $file = '' ) {
4068:   $file = ltrim( $file, '/' );
4069: 
4070:   if ( empty( $file ) ) {
4071:       $url = get_template_directory_uri();
4072:   } else {
4073:       $url = get_template_directory_uri() . '/' . $file;
4074:   }
4075: 
4076:   /**
4077:    * Filters the URL to a file in the parent theme.
4078:    *
4079:    * @since 4.7.0
4080:    *
4081:    * @param string $url  The file URL.
4082:    * @param string $file The requested file to search for.
4083:    */
4084:   return apply_filters( 'parent_theme_file_uri', $url, $file );
4085: }

Twentyseventeen les utilise pour instnace lors de l’accès aux ressources. ZBe. :

File: wp-content/themes/twentyseventeen/inc/custom-header.php
36:     add_theme_support( 'custom-header', apply_filters( 'twentyseventeen_custom_header_args', array(
37:         'default-image'      => get_parent_theme_file_uri( '/assets/images/header.jpg' ),
38:         'width'              => 2000,
39:         'height'             => 1200,
40:         'flex-height'        => true,
41:         'video'              => true,
42:         'wp-head-callback'   => 'twentyseventeen_header_style',
43:     ) ) );

Solution n°2 trouvée

Essayez d’utiliser à la get_stylesheet_directory_uri()place de bloginfo('template_directory').

Cette fonction vous donnera le chemin vers le style.cssthème actuellement activé (le thème enfant). De là, vous pouvez accéder à tous les sous-dossiers de votre dossier de thème enfant.

<button id="buy" type="submit"><img src="<?php get_stylesheet_directory_uri(); ?>/img/Buy-Now-Button.jpg" border="0" width="160" height="47" title="" alt="Buy One" style="cursor:pointer;"></button>

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *