essayer d'insérer du contenu avant le contenu de la publication dans mon functions.php - Je sais utiliser les crochets wp habituels, mais je ne sais pas comment l'insérer dans d'autres domaines.
J'ai essayé, mais cela tue le contenu de tout autre type de message:
function property_slideshow( $content ) {
if ( is_single() && 'property' == get_post_type() ) {
$custom_content = '[portfolio_slideshow]';
$custom_content .= $content;
return $custom_content;
}
}
add_filter( 'the_content', 'property_slideshow' );
Comment puis-je rendre cela conditionnel?
Utilisez simplement le filtre the_content
, par exemple:
<?php
function theme_slug_filter_the_content( $content ) {
$custom_content = 'YOUR CONTENT GOES HERE';
$custom_content .= $content;
return $custom_content;
}
add_filter( 'the_content', 'theme_slug_filter_the_content' );
?>
Fondamentalement, vous ajoutez le contenu de la publication après votre contenu personnalisé, puis vous retournez le résultat.
Comme Franky @bueltge le souligne dans son commentaire, le processus est le même pour le titre du post; ajoutez simplement un filtre au hook the_title
:
<?php
function theme_slug_filter_the_title( $title ) {
$custom_title = 'YOUR CONTENT GOES HERE';
$title .= $custom_title;
return $title;
}
add_filter( 'the_title', 'theme_slug_filter_the_title' );
?>
Notez que, dans ce cas, vous ajoutez votre contenu personnalisé après le titre. (Peu importe lequel; je suis juste allé avec ce que vous avez spécifié dans votre question.)
La raison pour laquelle votre code exemple ne fonctionne pas, c'est parce que vous ne retournez que $content
lorsque votre condition est remplie . Vous devez renvoyer $content
, non modifié, sous la forme else
à votre condition. par exemple.:
function property_slideshow( $content ) {
if ( is_single() && 'property' == get_post_type() ) {
$custom_content = '[portfolio_slideshow]';
$custom_content .= $content;
return $custom_content;
} else {
return $content;
}
}
add_filter( 'the_content', 'property_slideshow' );
De cette façon, pour les publications qui ne sont pas de type 'propriété', $content
est renvoyé, non modifié.
function property_slideshow( $content ) {
if ( is_singular( 'property' ) ) {
$custom_content = do_shortcode( '[portfolio_slideshow]' );
$custom_content .= $content;
}
return $custom_content;
}
add_filter( 'the_content', 'property_slideshow' );
La balise is_singular
conditionnelle vérifie si une publication singulière est affichée et vous permet de spécifier le paramètre $ post_types qui, dans ce cas, est la propriété.
Aussi, vous voudrez peut-être regarder do_shortcode