我有一个自定义的帖子类型,叫做freebies。我想使用档案免费赠品。php也用于子类别。我在我的函数中添加了。php如下所示:
function inherit_template() {
if (is_category()) {
$catid = get_query_var(\'cat\');
$cat = &get_category($catid);
$parent = $cat->category_parent;
$cat = &get_category($parent);
if ($cat->cat_ID == 45){
include (TEMPLATEPATH . \'/archive-freebies.php\');
exit;
}
}
}
add_action(\'template_redirect\', \'inherit_template\', 1);
到目前为止,它工作正常,加载了正确的存档模板,但向我显示没有帖子。我必须改变什么?我想模板也显示类别名称。我查看了条件标签,但没有自定义帖子类型的标签?
这是我的免费赠品。php
<?php get_header(); ?>
<section id="main">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<article>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>" data-lightbox-type="ajax"><?php the_title(); ?></a></h2>
<div class="entry">
<?php the_content(); ?>
</div>
<?php do_quickshare_output(); ?>
</article>
<?php endwhile; ?>
<div class="nav-previous alignleft backlink"><?php next_posts_link( \'Older posts\' ); ?></div>
<div class="nav-next alignright rightlink"><?php previous_posts_link( \'Newer posts\' ); ?></div>
<?php else : ?>
<p><?php _e(\'Sorry, no posts matched your criteria in freebies.\'); ?></p>
<?php endif; ?>
</section>
<?php get_sidebar(\'2\'); ?>
<br style="clear:both;" />
<?php get_footer(); ?>
我还尝试了另一个模板加载功能
add_filter( \'template_include\', \'freebie_page_template\', 99 );
function freebie_page_template( $template ) {
if ( is_post_type_archive( \'freebies\' ) ) {
$new_template = locate_template( array( \'archive-freebies.php\' ) );
if ( \'\' != $new_template ) {
return $new_template ;
}
}
return $template;
}
但这根本不起作用
最合适的回答,由SO网友:Owl 整理而成
好了,我终于明白了。问题是,默认情况下,查询中不包括自定义帖子类型。这意味着,自定义帖子显示在类别和归档页面上,但不再显示在子类别上。这个have_posts()
只是空的。
要包含这些,我必须在php函数中添加以下解决方案:http://css-tricks.com/snippets/wordpress/make-archives-php-include-custom-post-types/
(如果您的菜单不见了,请参考Jon B的评论:)
这样,我就有了自定义的帖子类型的免费赠品,它们显示在存档免费赠品上。php。免费赠品子类别中的帖子显示在免费赠品类别中。将此代码添加到函数时的php模板。php
// make category use parent category template
function load_cat_parent_template($template) {
$cat_ID = absint( get_query_var(\'cat\') );
$category = get_category( $cat_ID );
$templates = array();
if ( !is_wp_error($category) )
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-$cat_ID.php";
// trace back the parent hierarchy and locate a template
if ( !is_wp_error($category) ) {
$category = $category->parent ? get_category($category->parent) : \'\';
if( !empty($category) ) {
if ( !is_wp_error($category) )
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-{$category->term_id}.php";
}
}
$templates[] = "category.php";
$template = locate_template($templates);
return $template;
}
add_action(\'category_template\', \'load_cat_parent_template\');
我不完全理解为什么会这样,因为我没有将子类别帖子显示在与父类别相同的位置,并且从模板层次结构来看,类别应该放在存档之前,但帖子现在位于自己的模板中,所以也可以。如果有人能建议一个更正确的方法,请!
我以前曾尝试将此功能更改为与存档一起使用,但没有成功。
希望这对某人有帮助