Not resolved

Custom Single Page for Categories

Ultra Theme started by jfisherfbm Dec 29, 2015 2 replies
jfisherfbm Dec 29, 2015 · 12:04 am #2875

Hello,

I am trying to figure out how to make a custom single.php file for a specific category.

Typically, I create the file single-default.php, which is derived from the original single.php file. Then replace the code in single.php with the following:

<?php
if (in_category(‘category-name’)) {include (TEMPLATEPATH . ‘/single-category-name.php’);
}
elseif (in_category(‘another-category’)) {include (TEMPLATEPATH . ‘/single-another-category.php’);
}
else { include (TEMPLATEPATH . ‘/single-default.php’);
}
?>

This will give me the ability to have a custom template for the single blog posts, but this method doesn’t work with the Ultra theme for some reason.

I get a white page when trying to view a single blog post from a category listing.

Is there another way to have a custom template for the single blog posts within a specific category.

Basically I just want to remove the entry-meta from one category, but leave it on for the other categories.

P.S. I really like this theme, and I am interested in purchasing the pro version; however, I need this to work before I can purchase the theme.

Thanks in advance!

Puro Support Puro Dec 29, 2015 · 2:31 am #2877

Hi jfisherfbm

It’s great to hear from you. We can probably just do this from a child theme functions.php file. What is the ID of the category you don’t want entry meta to appear on?

Puro Support Puro Dec 29, 2015 · 3:01 am #2878

There are many ways this can be done. Here is a quick one. Copy single.php to your child theme. Change the .entry-header div as follows:

	<header class="entry-header <?php if ( in_category( '7' ) ) { echo "custom-cat"; } ?>">
		<div class="container">
			<h1 class="entry-title"><?php echo get_the_title(); ?></h1><?php ultra_breadcrumb(); ?>
		</div><!-- .container -->
	</header><!-- .entry-header -->

We’ve added: <?php if ( in_category( '7' ) ) { echo "custom-cat"; } ?>

Next, wrap the entry-meta div in a conditional:

	<?php if ( ! in_category( '7' ) ) : ?>
	<div class="entry-meta">
		<div class="container">
			<div>
				<?php ultra_posted_on(); ?>
			</div>
		</div><!-- .container -->	
	</div><!-- .entry-meta -->
	<?php endif; ?>

In both cases, replace the category ID 7 with yours.

Finally, in the style.css file of your child theme or in a Custom CSS plugin, insert:

.single .entry-header.custom-cat {
	margin-bottom: 2.67857em;
}
3 posts