WordPress | Appliquer la fonction/le filtre à un modèle spécifique (filtre de fonction d’image en vedette)
J’ai le code suivant dans mon plugin de réglages.
add_filter( 'the_content', 'sqhse_news_featimgmove', 20 );
function sqhse_news_featimgmove( $content ) {
$content = preg_replace( "/</p>/", "</p>" . get_the_post_thumbnail($post->ID,'post-single', array( 'class' => "img-fluid img-rounded w-100")) . "<div class='clearfix' style='margin-bottom:10px;'></div>", $content, 1 );
return $content;
}
Ce qu’il fait :
Il ajoute l’image en vedette après le premier paragraphe, ce qui est génial et exactement ce dont j’ai besoin.
Le problème : Le code s’applique à single.php (super c’est là que j’en ai besoin) mais il s’applique également à single-training_courses.php (un modèle pour un type de publication personnalisé).
L’aide requise : appliquez le code à single.php et non à des sous-modèles uniques tels que single-training_courses.php
Est-ce réalisable ? et si oui, comment puis-je y parvenir?
Solution n°1 trouvée
Vous pouvez utiliser get_post_type()
la fonction WordPress et envelopper votre code dans une instruction if comme suit :
add_filter( 'the_content', 'sqhse_news_featimgmove', 20 );
function sqhse_news_featimgmove( $content ) {
if( get_post_type() == 'post' ) {
$content = preg_replace( "/</p>/", "</p>" . get_the_post_thumbnail($post->ID,'post-single', array( 'class' => "img-fluid img-rounded w-100")) . "<div class='clearfix' style='margin-bottom:10px;'></div>", $content, 1 );
return $content;
}
return $content;
}
Solution n°2 trouvée
Le filtre que vous utilisez the_content
, comme vous l’avez découvert, s’appliquera à toutes les zones de contenu. Vous devez ajouter une condition pour vérifier le type de publication sur lequel vous vous trouvez et ajuster en conséquence. Ma suggestion serait d’utiliser is_singular()
.
add_filter( 'the_content', 'sqhse_news_featimgmove', 20 );
function sqhse_news_featimgmove( $content ) {
if ( is_singular( 'post' ) ) {
$content = preg_replace( "/</p>/", "</p>" . get_the_post_thumbnail($post->ID,'post-single', array( 'class' => "img-fluid img-rounded w-100")) . "<div class='clearfix' style='margin-bottom:10px;'></div>", $content, 1 );
}
return $content;
}
Lorsque vous traitez avec des filtres, assurez-vous de toujours renvoyer une valeur. Si vous avez une condition, par exemple, gardez l’instruction de retour en dehors de celle-ci.
https://codex.wordpress.org/Function_Reference/is_singular
0 commentaire