如何根据所有CPT插件自动给它们一个文件夹

时间:2015-03-01 作者:Marc P Gangmei

这就是我现在的工作:

function get_custom_post_type_template($single_template) {
global $post;

if ($post->post_type == \'amazon\') {
$single_template = TEMPLATEPATH . \'/amazon/single.php\';
}
return $single_template;
}
add_filter( \'single_template\', \'get_custom_post_type_template\' );
但我想要这样的东西:

add_filter(\'single_template\', \'my_single_template_folders_terms\');
function my_single_template_folders_terms($template) {
global $wp_query;
foreach( get_post_type(array(\'public\' => true, \'_builtin\' => false)) as $post_type ) {
if ( file_exists(TEMPLATEPATH . "/{$post_type->slug}/single.php") )
        return TEMPLATEPATH . "/{$post_type->slug}/single.php";
}
return $template;
}
我犯了这个错误;警告:为foreach()提供的参数无效

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您的第二个函数错误。get_post_type($post) 除了当前的post对象或post ID或任何给定给它的post对象或ID。您正在使用的参数get_post_types( $args, $output, $operator ) 对于get_post_type, 这会使功能失效,进而导致foreach

要纠正您的功能,请使用以下方法:

add_filter(\'single_template\', \'my_single_template_folders_terms\');
function my_single_template_folders_terms($template) {
    global $post;

    $post_type = get_post_type($post);
    if ( file_exists(TEMPLATEPATH . "/{$post_type}/single.php") )
        return TEMPLATEPATH . "/{$post_type}/single.php";

    return $template;
}

结束

相关推荐

如何使用GET_TEMPLATE_DIRECTORY_URI()加载我的主题的子文件夹中的图像?

如何将子文件夹中的图像插入主题目录?我有以下情况:在我的自定义主题目录中,我有以下文件夹,其中包含jpg 图片:/assets/img/flexslider/flex-1.jpg现在在我的header.php 文件,我有这样的东西:<li> <img src=\"assets/img/flexslider/flex-1.jpg\"> <div class=\"flex-caption\"> <p class=\"flex-c