christopher
  • 0
Новичок

Конфликт в функции разрешения единого шаблона сообщения на основе категории

  • 0

Я много раз использовал замечательную функцию Джастина Тэдлока для настраиваемых шаблонов сообщений для конкретных категорий, где вы можете использовать single-cat-id.php для отдельных сообщений, принадлежащих к определенной категории. Я только что столкнулся с проблемой, работая над новым сайтом, который должен использовать шаблон single-{posttype} для пользовательского типа сообщений. Кажется, что эта функция не позволяет пользовательским сообщениям использовать шаблон single-{posttype}.

Вот применимый код:

/* Define a constant path to our single template folder */
define(SINGLE_PATH, TEMPLATEPATH . '/single');

/* Filter the single_template with our custom function*/
add_filter('single_template', 'my_single_template');

/* Single template function which will choose our template*/
function my_single_template($single) {
    global $wp_query, $post;

/* Checks for single template by category. Check by category slug and ID */
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;

/*Checks for default single post files within the single folder */
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; }

Любые мысли о том, как изменить следующий код, чтобы разрешить как исходную функцию single-cat-id, так и single-{posttype} ?

Share
  1. Привет, Крис! Обязательно посетите страницу справки по редактированию, чтобы получить помощь в форматировании вопросов.

    • 0
  2. Вы можете проверить свой тип сообщения single-{post-type}.php, сначала попробуйте это:

    /* Define a constant path to our single template folder */
    define(SINGLE_PATH, TEMPLATEPATH . '/single');
    
    /* Filter the single_template with our custom function*/
    add_filter('single_template', 'my_single_template');
    
    /* Single template function which will choose our template*/
    function my_single_template($single) {
        global $wp_query, $post;
    
    /* Checks for single template by post type */
    if ($post->post_type == "POST TYPE NAME"){
        if(file_exists(SINGLE_PATH . '/single-' . $post->post_type . '.php'))
            return SINGLE_PATH . '/single-' . $post->post_type . '.php';
    }
    
    /* Checks for single template by category. Check by category slug and ID */
    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;
    
    /*Checks for default single post files within the single folder */
    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; 
    }
    

    и просто замените «ИМЯ ТИПА ПУБЛИКАЦИИ» на ваше собственное имя типа сообщения.

    • 0

Оставить ответ

You must login to add an answer.