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

27

essayer d'insérer du contenu avant le contenu de l'article dans mon functions.php - Je sais comment 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?

    
posée Jason 24.01.2012 - 04:49
la source

2 réponses

37

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' );
?>

En principe, vous ajoutez le contenu de la publication après votre contenu personnalisé, puis vous renvoyez le résultat.

Modifier

Comme le souligne Franky @bueltge dans son commentaire, le processus est identique pour le titre du message. ajoutez simplement un filtre au the_title hook:

<?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 au titre. (Peu importe lequel; je suis simplement allé avec ce que vous avez spécifié dans votre question.)

Modifier 2

Si votre exemple de code ne fonctionne pas, c'est parce que vous ne retournez que $content lorsque votre condition est remplie . Vous devez renvoyer $content , non modifié, en tant que else à votre conditionnel. 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' );

Ainsi, pour les publications qui ne sont pas du type "propriété", $content est renvoyé, non modifié.

    
réponse donnée Chip Bennett 24.01.2012 - 04:59
la source
0
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 conditionnelle is_singular 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é.

Vous pouvez également consulter do_shortcode

.     
réponse donnée Brad Dalton 02.11.2014 - 20:29
la source

Lire d'autres questions sur les étiquettes