0

Can I add the archive and single page for a custom post type added by my plugin?

I know it will only have to be a best guess with contents like:

<?php get_header(); ?>
<h2><?php _e('My Post Type', 'my-slug'); ?></h2>

<?php //get posts and list ?>

<?php get_footer(); ?>

Which would mean it would need to be possible for a user (or me) to override those pages in a theme using archive-{post-type}.php and single-{post-type}.php or something similar.

1 Answer 1

1

You can't without hooking a filter to recognise the files in your plugin BUT you can hook into the template_include filter and register your own file e.g.

add_filter('template_include', 'my_function_name');
function my_function_name( $template ) {
 if( is_post_type_archive( 'post_type' ) ){
  $template = dirname( __FILE__ ) . '/templates/archive-post_type.php';
 }
 if( is_singular( 'post_type' ) ){
  $template = dirname( __FILE__ ) . '/templates/single-post_type.php';
 }
 return $template;
}

I was given this code by another WSE user when I had this exact need

1
  • Thanks! I added ` && !(strpos($template, 'edpn_newsletter'))` into both if statements so that if the theme is providing a custom template for the post type it will respected.
    – Arcath
    Commented Jun 22, 2016 at 15:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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