2014-12-14 4 views
1

Я создал пользовательскую таксономию для теговWordpress же архив шаблон для пользовательского типа поста и систематики

function create_topics_nonhierarchical_taxonomy() { 

    // Labels part for the GUI 

    $labels = array(
    'name' => _x('Topics', 'taxonomy general name'), 
    'singular_name' => _x('Topic', 'taxonomy singular name'), 
    'search_items' => __('Search Topics'), 
    'popular_items' => __('Popular Topics'), 
    'all_items' => __('All Topics'), 
    'parent_item' => null, 
    'parent_item_colon' => null, 
    'edit_item' => __('Edit Topic'), 
    'update_item' => __('Update Topic'), 
    'add_new_item' => __('Add New Topic'), 
    'new_item_name' => __('New Topic Name'), 
    'separate_items_with_commas' => __('Separate topics with commas'), 
    'add_or_remove_items' => __('Add or remove topics'), 
    'choose_from_most_used' => __('Choose from the most used topics'), 
    'menu_name' => __('Topics') 
); 

    // Now register the non-hierarchical taxonomy like tag 

    register_taxonomy('topics','post',array(
    'hierarchical' => false, 
    'labels' => $labels, 
    'show_ui' => true, 
    'show_admin_column' => true, 
    'update_count_callback' => '_update_post_term_count', 
    'query_var' => true, 
    'show_in_nav_menus' => true, 
    'rewrite' => array('slug' => 'topic'), 
)); 
} 

и подключил его к моему пользовательскому почтовому типу

register_post_type('video', array(
    ... 
    'taxonomies' => array('topics'), 
    ... 
)); 

Обычай пост типа использует archive-video.php как шаблон архива. Можно ли использовать один и тот же шаблон архива для пользовательской таксономии? Без дублирования файла и его переименования.

+0

http://css-tricks.com/snippets/wordpress/make-archives-php-include-custom-post-types/ – rnevius

+0

Спасибо. Функция не будет работать, потому что я не использую archives.php. Я использую собственный архив с именем archive-video.php (который также находится в подкаталоге) – CyberJunkie

ответ

3

Вы можете сделать использование template_include фильтра, чтобы установить нужный шаблон для конкретных условий

Вы можете попробовать что-то вроде этого

add_filter('template_include', function ($template) { 

    if (is_tax('topics')) { 
    $new_template = locate_template(array('archive-video.php')); 
     if ('' != $new_template) { 
      return $new_template ; 
     } 
    } 
    return $template; 

}, PHP_INT_MAX, 2); 
+0

После архива-video.php есть дополнительное пространство, которое разбивает ваш пример. Я вытащил волосы на час, но я не могу отредактировать его, потому что редактирование составляет менее 6 символов. –

+0

@ StephenSmith Спасибо, что указали это, исправили его :-) –

4

Я бы создал файл таксономии и загрузил файл архива. Это позволяет избежать двух копий одного и того же файла, которые необходимо синхронизировать. WooCommerce использует тот же подход для категорий продуктов и тегов.

Создать taxonomy-topics.php и добавьте следующий код:

<?php 

// Find and load the archive template. 
locate_template('archive-video.php', true); 
Смежные вопросы