Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

trying to insert content before the post content in my functions.php - I know how to use the regular wp hooks, but unsure how to insert into other areas.

Tried this, but it kills content on any other post type:

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

How do I make this conditional?

share|improve this question
add comment

1 Answer 1

up vote 8 down vote accepted

Just use the the_content filter, e.g.:

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

Basically, you append the post content after your custom content, then return the result.

Edit

As Franky @bueltge points out in his comment, the process is the same for the post title; simply add a filter to the 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' );
?>

Note that, in this case, you append your custom content after the Title. (It doesn't matter which; I just went with what you specified in your question.)

Edit 2

The reason your example code isn't working is because you only return $content when your conditional is met. You need to return $content, unmodified, as an else to your conditional. e.g.:

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

This way, for posts not of the 'property' post-type, $content is returned, un-modified.

share|improve this answer
    
also it is possible to add content after title; the filter the_title is the right hook. –  bueltge Jan 24 '12 at 7:51
    
Thanks, @bueltge! See updated answer. –  Chip Bennett Jan 24 '12 at 15:21
    
@ChipBennett question - how to do this with logic only for a custom post type - I tried to wrap it in if ( is_single() && 'property' == get_post_type() ) {} but that didn't work for me –  Jason Jan 25 '12 at 0:02
    
@ChipBennett - I got it working on my custom post type, but the content disappears from any other post type. See edit above. –  Jason Jan 25 '12 at 0:10
1  
That's because you're not returning $content for post types other than for your custom post type. See updated answer. –  Chip Bennett Jan 25 '12 at 0:55
show 3 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.