WordPress : 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 img
dossier 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 img
dossier 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_uri
et 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.css
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>
0 commentaire