wyck
  • 0
Гуру

Архивы тегов пользовательских типов записей не работают для базового цикла?

  • 0

Я зарегистрировал пользовательский тип записи с правильными параметрами. Под этим я подразумеваю, что я добавил 'taxonomies' => array('post_tag','category'),

Я также пытался использоватьregister_taxonomy_for_object_type('post_tag', 'custom-post-type-name');

У меня есть пользовательская функция в моем файле functions.php для загрузки базового цикла с использованием условного выражения, в соответствии со строками.

function child_maybe_do_grid_loop() {    
if( is_tag() || is_category() || is_archive {
require(CHILD_DIR.'/custom-tag.php');
 }
}

Содержимое custom-tag.php — это просто очень простой цикл.

<?php if (have_posts()) : ?>
 <?php while (have_posts()) : the_post(); ?> 
   <?php the_permalink(); ?>" title="<?php the_title(); ?> 
 <?php endwhile; ?>    
<?php else : ?>
<h2 class="center">Not Found</h2>
<?php endif; ?>

Это отлично работает для обычных тегов сообщений/страниц, но для тегов пользовательских типов сообщений я получаю «Не найдено».

Есть идеи? Я предположил, что обычный простой цикл должен работать с архивами тегов пользовательских типов сообщений, или мне нужно добавить туда дополнительные условия/запросы?

** Обновление комментария toscho заставило меня включить отладку, и по сравнению с рабочей страницей тегов, созданной с помощью публикации по умолчанию, отладка для пользовательского тега публикации точно такая же.

Я даже получаю count => 2, когда я постепенно добавляю больше пользовательских сообщений в один и тот же тег, но страница отказывается что-либо возвращать, я в растерянности.

Share
  1. Вы ничего не получаете или сообщение Not Found? Вы обновили свои постоянные ссылки после регистрации?

    • 0
  2. Вниз по кроличьей норе….. Я нашел решение.

    Из этого сообщения Пользовательские архивы типов сообщений по дате и таксономии

    Который позволил мне получить этот билет http://core.trac.wordpress.org/ticket/14589

    и следующее

    function post_type_tags_fix($request) {
        if ( isset($request['tag']) && !isset($request['post_type']) )
        $request['post_type'] = 'any';
        return $request;
    } 
    add_filter('request', 'post_type_tags_fix');
    

    Может это не вошло в 3.1?

    • 0
  3. Вам нужно запустить цикл перед условным оператором.

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    
    <?php if( is_tag() || is_category() || is_archive { ?>
    
    <?php the_permalink(); ?>" title="<?php the_title(); ?> 
    
    <? } else { ?>
    
    //do something else
    
    } ?>
    
    <?php endwhile; ?>    
    <?php else : ?>
    <h2 class="center">Not Found</h2>
    <?php endif; ?>
    
    • 0

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

You must login to add an answer.