web-dev-qa-db-fra.com

Les crochets/filtres WordPress insèrent avant le contenu ou après le titre

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?

28
Jason

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.

Modifier

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.)

Modifier 2

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é.

38
Chip Bennett
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

0
Brad Dalton