如何为特定类别创建一个Single.php?

时间:2013-02-05 作者:perdrix

我正在尝试创建一个。我的网站上特定类别的php文件。而不是加载单个。php文件我希望WP在名为single-category-53的文件中返回该类别。php(实际类别id=53)。我允许在网站上选择多个类别,在Hikari的permalink插件的帮助下,我们为permalink选择了合适的类别。由于这个原因,我无法引用类别的任何内置函数,因为Wordpress默认为数字顺序。下面的代码通过if工作($catp==53)。。。我已经证实了这一点。问题似乎在于将单一类别称为53。php文件,或者我没有正确执行嵌套的if语句。

我已经确认我上传了单类别53。php文件到子主题目录。

非常感谢您在更正代码方面提供的任何帮助!

    // A function which displays a specific catergory equal to the _category_permalink

    function ag_templates($single_template) {

    global $wpdb;
    $table = $wpdb->prefix . "postmeta" ;
    $query = $wpdb->prepare( "SELECT * FROM {$table}
                              WHERE `post_id` = %d 
                              AND `meta_key` LIKE \'_category_permalink\' ",
                              $post->ID );
    $perma = $wpdb->get_row( $query );
    $catp = $perma->meta_value;
    if ($catp == 53) {
    if ( file_exists (STYLESHEETPATH . "/single-category-53.php") ) 
    $single_template = STYLESHEETPATH . "/single-category-53.php"; }
    return $single_template;
    }

    add_filter( "single_template", "ag_templates" ) ;

    // End specific category template function.

2 个回复
最合适的回答,由SO网友:Milo 整理而成

我想这正是你想要的:

function ag_templates( $template = \'\' ){
    global $post;
    $meta = get_post_meta( $post->ID, \'_category_permalink\', true );
    if( 53 == $meta ){
        $template = locate_template(
            array( "single-category-53.php", $template ),
            false
        );
    }
    return $template;
}
add_filter( \'single_template\', \'ag_templates\' );

SO网友:Marc Wiest

不知道你为什么需要这样做,但如果这种方式对你来说不是太重要的话。下面是我要做的。

创建一个名为mycat term的文件。php使用条件查找您要查找的类别:http://codex.wordpress.org/Function_Reference/is_taxhttp://codex.wordpress.org/Function_Reference/get_template_part将此代码放入您的单曲中。php:

if ( is_category( \'term_you_are_looking_for\' ) ) {
    get_template_part( \'mycat\', \'term\' ); // gets mycat-term.php
} 
更新:我不确定我是否理解你想要完成什么,但因为你是单身。php和类别/标记不是直接可用的,这里还有几个代码片段可以帮助您将它们放到那里。

global $post;
$current_tax = get_post_taxonomies($post->ID); // get current taxonomies array: [0] = cat, [1] = tag    
$terms = wp_get_post_terms($post->ID, $current_tax[1]);
$term = $terms->taxonomy;`
您可以在$args中为get\\u category()引用分类法;作用http://codex.wordpress.org/Function_Reference/get_categories

结束

相关推荐

我希望single.php的行为与index.php类似

我正在为我的投资组合创建一个WordPress主题,我想我的单曲。php文件的行为就像索引一样。php。我需要单人间。php显示整个循环,但如果我访问单个帖子的页面,它只显示特定帖子,而不是帖子的完整列表。我使用的是单页设计,我必须使用<?php echo($post->post_name) ?> 在页面上加载,以便加载一些AJAX和一些深度链接等。如果我删除单曲。当使用http://www.example.com/postname URL。正在删除函数。php对它没有任何改变。以下是该