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.

Say that I want to make a post type called 'press' and it is mostly concerned with linking a title with a PDF document of a press clipping. I want to show all of these as an archive... so something like site.com/press but i don't want any single post template pages. so no site.com/press/article1 or site.com/press/article2. other than not including a link in my archive template (which just obscures it but doesn't negate their existence or prevent access to the single posts) how can i prevent a visitor from inadvertently accessing the single posts. how could i re-direct them back to the /press archive?

share|improve this question

1 Answer 1

up vote 10 down vote accepted

The fast way

In your .htaccess add a rule

RedirectMatch Permanent ^/press/.+ /press/

Plugin way

Hook into template_redirect and redirect all requests to a single entry:

add_action( 'template_redirect', 'wpse_45164_redirect_press' );

function wpse_45164_redirect_press()
{
    is_singular( 'press' )
    and wp_redirect( home_url( '/press/' ), 301 )
    and exit;
}

(Caveat: not tested)

share|improve this answer
2  
Condition can be simplified to is_singular( 'press' ) also worth making redirect 301 (default is 302). –  Rarst Mar 11 '12 at 13:55
    
Ahem … yes. :) Fixed. –  toscho Mar 11 '12 at 13:56
2  
Also I think there is now fitting get_post_type_archive_link() just to not assume anything about link structure. –  Rarst Mar 11 '12 at 15:25
    
@toscho is there an argument which does this when registering a custom post type? Or is redirecting the only way to prevent access to a single custom post type page? –  Anagio Feb 2 '13 at 16:31
    
@Anagio The alternative is: make the post type not public, register an endpoint to show the archive. But the you have to fiddle with the query (pagination, plugins don’t hook in when they should etc.). The solution I gave in my answer is the most pragmatic approach I could come up with. –  toscho Feb 2 '13 at 16:52

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.