Je ne suis donc pas tout à fait sûr de la meilleure façon d’accomplir cette tâche. J'ai essayé certaines choses simplement pour voir ce qui fonctionnait, mais je ne sais pas si la façon dont j'ai accompli cette tâche est la méthode la plus appropriée. J'espère donc que des personnes beaucoup plus intelligentes que moi pourront m'éclairer si tout va bien ...
En bref, le thème que je suis en train de thématiser semble utiliser globalement des fonctions pour exécuter différents blocs de code pour la présentation des thèmes.
Le code que je devais apporter à quelques modifications mineures était contenu dans plusieurs fonctions du thème parent et la seule façon pour moi de procéder par essais et erreurs pour que mes modifications fonctionnent dans mon thème enfant était de copier les fonctions nécessaires. être changé du thème parent, puis il suffit de les déclarer à nouveau en ajoutant légèrement le nom de la fonction.
Cela a bien fonctionné, mais je ne sais pas si c'est une mauvaise pratique, je voulais donc vérifier auprès de la communauté pour savoir quelle serait la meilleure façon de procéder.
Tout ce qui est réellement en train de changer est de supprimer l'avatar qui est marqué dans l'en-tête.
L'ensemble de fonctions d'origine du thème parent:
/**
* This function contains large post title markup.
* It is used in 'flexia_post_large_title' method.
*
* @since v0.0.5
*/
function flexia_post_large_title_markup() {
$thumbnail = '';
if (function_exists('has_post_thumbnail')) {
if ( has_post_thumbnail() ) {
$thumbnail = wp_get_attachment_url( get_post_thumbnail_id() );
}
}
?>
<header class="page-header single-blog-header" <?php if ( ! empty( $thumbnail ) ) : ?>
style="background-image: url('<?php echo esc_attr($thumbnail); ?>');" <?php endif; ?> <?php if ( empty( $thumbnail ) ) : ?>
style="background-image: url('<?php echo esc_attr(get_header_image()); ?>');" <?php endif; ?>>
<div class="header-inner">
<div class="header-content">
<?php the_title( '<h1 class="blog-title">', '</h1>' ); ?>
<?php flexia_post_large_title_author_avatar_markup(); ?>
</div>
</div>
<div class="header-overlay"></div>
</header>
<?php
}
/**
* This function contains large post title author avatar markup.
* It is used in 'flexia_post_large_title_markup' method.
*
* @since v0.0.5
*/
function flexia_post_large_title_author_avatar_markup() {
if( class_exists( 'CMB2_Bootstrap_230' ) ) {
global $post;
$post_title_header_meta = get_post_meta( $post->ID, '_flexia_post_meta_key_header_meta', true );
$post_title_header_post_author = get_post_meta( $post->ID, '_flexia_post_meta_key_header_author_meta', true );
if( $post_title_header_meta == 'yes' || $post_title_header_meta == NULL ) {
if( $post_title_header_post_author == 'yes' || $post_title_header_post_author == NULL ) {
?>
<div class="blog-author">
<div class="author-avatar">
<?php echo get_avatar( get_the_author_meta( 'ID' ), 'flexia-thumbnail-avatar' ); ?>
<div class="author-body">
<h4 class="author-heading"><?php the_author(); ?></h4>
</div>
</div>
</div>
<?php
}else {
return false;
}
}else {
return false;
}
}else {
?>
<div class="blog-author">
<div class="author-avatar">
<?php echo get_avatar( get_the_author_meta( 'ID' ), 'flexia-thumbnail-avatar' ); ?>
<div class="author-body">
<h4 class="author-heading"><?php the_author(); ?></h4>
</div>
</div>
</div>
<?php
}
}
/**
*
*/
function flexia_post_large_title_header_meta_markup() {
?>
<header class="entry-header single-blog-meta single-post-meta-large">
<?php
if ( 'post' === get_post_type() ) : ?>
<div class="entry-meta">
<?php flexia_updated_on(); ?>
</div><!-- .entry-meta -->
<?php
endif; ?>
</header><!-- .entry-header -->
<?php
}
/**
* This function will show/hide large post title
*
* @since v0.0.5
*/
function flexia_post_large_title() {
$flexia_single_posts_layout = get_theme_mod('flexia_single_posts_layout', 'flexia_single_posts_layout_large');
if( class_exists( 'CMB2_Bootstrap_230' ) ) {
global $post;
$post_title = get_post_meta( $post->ID, '_flexia_post_meta_key_page_title', true );
$post_title_header_meta = get_post_meta( $post->ID, '_flexia_post_meta_key_header_meta', true );
if( $post_title == 'default' || $post_title == NULL ) {
if( $flexia_single_posts_layout == 'flexia_single_posts_layout_large' ) {
flexia_post_large_title_markup();
if( $post_title_header_meta == 'yes' || $post_title_header_meta == NULL ) {
flexia_post_large_title_header_meta_markup();
}
}else {
return false;
}
}elseif( $post_title == 'large') {
flexia_post_large_title_markup();
if( $post_title_header_meta == 'yes' || $post_title_header_meta == NULL ) {
flexia_post_large_title_header_meta_markup();
}
}else {
return false;
}
}else {
if( $flexia_single_posts_layout == NULL || $flexia_single_posts_layout == 'flexia_single_posts_layout_large' ) {
flexia_post_large_title_markup();
flexia_post_large_title_header_meta_markup();
}
}
}
Ma tentative grossière de modification du code afin d'apporter quelques modifications simples au balisage placé dans le functions.php
de mon thème enfant:
(J'ai commenté les parties que j'ai supprimées de la fonction d'origine afin que vous puissiez voir ce que j'ai supprimé plus facilement)
// This function contains large post title markup.
// It is used in 'flexia_post_large_title' method.
function hbps_flexia_post_large_title_markup() {
$thumbnail = '';
if (function_exists('has_post_thumbnail')) {
if ( has_post_thumbnail() ) {
$thumbnail = wp_get_attachment_url( get_post_thumbnail_id() );
}
}
?>
<header class="page-header single-blog-header" <?php if ( ! empty( $thumbnail ) ) : ?>
style="background-image: url('<?php echo esc_attr($thumbnail); ?>');" <?php endif; ?> <?php if ( empty( $thumbnail ) ) : ?>
style="background-image: url('<?php echo esc_attr(get_header_image()); ?>');" <?php endif; ?>>
<div class="header-inner">
<div class="header-content">
<?php the_title( '<h1 class="blog-title">', '</h1>' ); ?>
</div>
</div>
<div class="header-overlay"></div>
</header>
<?php
}
// Change blog header titles by removing Avatar and including By: before Author
// This function contains large post title author avatar markup.
// It is used in 'flexia_post_large_title_markup' method.
function hbps_flexia_post_large_title_author_avatar_markup() {
if( class_exists( 'CMB2_Bootstrap_230' ) ) {
global $post;
$post_title_header_meta = get_post_meta( $post->ID, '_flexia_post_meta_key_header_meta', true );
$post_title_header_post_author = get_post_meta( $post->ID, '_flexia_post_meta_key_header_author_meta', true );
if( $post_title_header_meta == 'yes' || $post_title_header_meta == NULL ) {
if( $post_title_header_post_author == 'yes' || $post_title_header_post_author == NULL ) {
?>
<div class="blog-author">
<div class="author-avatar">
<!-- DELETE AVATAR IN HEADER -->
<!-- <?php echo get_avatar( get_the_author_meta( 'ID' ), 'flexia-thumbnail-avatar' ); ?> -->
<div class="author-body">
<h4 class="author-heading">By: <?php the_author(); ?></h4>
</div>
</div>
</div>
<?php
}else {
return false;
}
}else {
return false;
}
}else {
?>
<div class="blog-author">
<div class="author-avatar">
<!-- DELETE AVATAR IN HEADER -->
<!-- <?php echo get_avatar( get_the_author_meta( 'ID' ), 'flexia-thumbnail-avatar' ); ?> -->
<div class="author-body">
<h4 class="author-heading">By: <?php the_author(); ?></h4>
</div>
</div>
</div>
<?php
}
}
function hbps_flexia_post_large_title_header_meta_markup() {
?>
<header class="entry-header single-blog-meta single-post-meta-large">
<?php
if ( 'post' === get_post_type() ) : ?>
<div class="entry-meta">
<?php flexia_updated_on(); ?>
</div><!-- .entry-meta -->
<?php
endif; ?>
</header><!-- .entry-header -->
<?php
}
// This function will show/hide large post title
function hbps_flexia_post_large_title() {
$flexia_single_posts_layout = get_theme_mod('flexia_single_posts_layout', 'flexia_single_posts_layout_large');
if( class_exists( 'CMB2_Bootstrap_230' ) ) {
global $post;
$post_title = get_post_meta( $post->ID, '_flexia_post_meta_key_page_title', true );
$post_title_header_meta = get_post_meta( $post->ID, '_flexia_post_meta_key_header_meta', true );
if( $post_title == 'default' || $post_title == NULL ) {
if( $flexia_single_posts_layout == 'flexia_single_posts_layout_large' ) {
hbps_flexia_post_large_title_markup();
if( $post_title_header_meta == 'yes' || $post_title_header_meta == NULL ) {
hbps_flexia_post_large_title_header_meta_markup();
}
}else {
return false;
}
}elseif( $post_title == 'large') {
hbps_flexia_post_large_title_markup();
if( $post_title_header_meta == 'yes' || $post_title_header_meta == NULL ) {
hbps_flexia_post_large_title_header_meta_markup();
}
}else {
return false;
}
}else {
if( $flexia_single_posts_layout == NULL || $flexia_single_posts_layout == 'flexia_single_posts_layout_large' ) {
hbps_flexia_post_large_title_markup();
hbps_flexia_post_large_title_header_meta_markup();
}
}
}
Vous pouvez modifier le nom de la fonction ainsi que les modifications nécessaires et le copier dans le fichier de fonction du thème enfant. Dans le fichier d'origine, vous devez rechercher add_filter
ou add_action
. Dans le thème enfant, vous pouvez décrocher les fonctions originales à l'aide de remove_filter
ou remove_action
. pouvez utiliser add_filter
ou add_action
avec votre nouvelle fonction. En bref, vous pouvez simplement trouver le add_action
ou le add_filter
pour ces fonctions modifiées, les copier et les renommer en ajoutant à supprimer, puis à nouveau copier le add_action
ou add_filter
du thème original et cette fois vous pouvez remplacer le nom de la fonction.
Mise à jour: pour ce thème spécifique, vous n'avez pas besoin de add_filter
ou remove_filter
car la fonction flexia_post_large_title_author_avatar_markup
est directement appelée à la ligne 174, et peut-être n'est-elle utilisée nulle part ailleurs, de sorte qu'elle n'est associée à aucune action et identique pour la deuxième fonction