将category.php之间的变量传递给single.php?

时间:2010-08-19 14:40:42

标签: wordpress

我无法弄清楚当点击帖子时将当前类别ID传递给header.php的方法。

所以,让我说我在第2类,然后点击属于多个类别的帖子。我希望single.php保持在类别2的外观。为了做到这一点,我需要一个变量来告诉标题它来自哪个类别

1 个答案:

答案 0 :(得分:0)

只需将模板类别命名为X.php,其中X是您想要自定义模板的特定类别名称或ID,并将其放在主题目录的/ single文件夹中。现在,只要调用一个帖子并且它匹配该文件夹中的现有模板,它就会使用它来显示帖子而不是常规的single.php。如果未找到匹配项,则使用single.php。

在functions.php中:

define(SINGLE_PATH, TEMPLATEPATH . '/single');
add_filter('single_template', 'force_cat2single_template');  

function force_cat2single_template($single) {
global $wp_query, $post;
foreach((array)get_the_category() as $cat) :

        if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
            return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';

        elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
            return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
        endforeach;

        if(file_exists(SINGLE_PATH . '/single.php'))
            return SINGLE_PATH . '/single.php';
        elseif(file_exists(SINGLE_PATH . '/default.php'))
            return SINGLE_PATH . '/default.php';
    return $single;
}