web-dev-qa-db-fra.com

Remplacement d'un dossier de thème parent dans le thème enfant

J'ai un thème parent qui fait référence à une image dans le dossier img 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, puis dans ce thème enfant, il y avait un autre dossier img avec un autre Buy-Now-Button.jpg, qui 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 pour enfants. Est-ce que je m'y emploie de la bonne façon?

1
Naz

Essayez d’utiliser get_stylesheet_directory_uri() au lieu de bloginfo('template_directory').

Cette fonction vous donnera le chemin vers le style.css de votre thè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>
2
Felix

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

Vous pouvez utiliser cela au lieu 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 accéder 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:     ) ) );
0
prosti