redlist
  • 0
Новичок

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

  • 0

Я знаю, что это довольно распространенная тема, но я не могу решить проблему, с которой столкнулся. Любая помощь приветствуется, на данный момент я бездельничаю.

Используя плагин Custom Post Type UI, я создал несколько пользовательских типов сообщений (в этом примере я буду использовать «блог»). Я установил has_archive => true, а также использовал плагин под названием Custom Post Type Archives, чтобы моя нумерация страниц работала правильно. Пока у меня работают постоянные ссылки, теги, категории и нумерация страниц. Однако проблема заключается в том, что я пытаюсь использовать функцию wp_get_archives. Я понимаю, что это не захватывает CPT, поэтому я использовал функцию, которая поставляется с плагином Custom Post Type Archives (wp_get_custom_post_archives). В зависимости от того, как я настраиваю аргументы, он выдает либо 404, либо загружает архивы, но просто отображает каждую запись (а не только те, которые относятся к выбранному месяцу). В идеале я просто хочу, чтобы он отображал ежемесячные архивы.

<?php wp_get_post_type_archives('blog');

Посмотрите здесь: http://www.metropoliscreative.com/coding/w/blog/

Я использовал это для регистрации типа сообщения и считаю, что сделал это правильно. Не уверен, что я делаю неправильно в этот момент.

register_post_type('blog', array(   
        'label' => 'Blog',
        'description' => 'Blog Entries',
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => array(
            'slug' => 'blog'),
        'has_archive' => true,
    'query_var' => true,
    'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes',),
    'taxonomies' => array('category','post_tag',),
    'labels' => array (
      'name' => 'Blog',
      'singular_name' => 'Blog',
      'menu_name' => 'Blog',
      'add_new' => 'Add Blog',
      'add_new_item' => 'Add New Blog',
      'edit' => 'Edit',
      'edit_item' => 'Edit Blog',
      'new_item' => 'New Blog',
      'view' => 'View Blog',
      'view_item' => 'View Blog',
      'search_items' => 'Search Blog',
      'not_found' => 'No Blog Found',
      'not_found_in_trash' => 'No Blog Found in Trash',
      'parent' => 'Parent Blog',
    ),) );
Share
  1. Поскольку has_archive был новым в 3.1 (я думаю), очень вероятно, что один из этих плагинов может его не использовать.

    • 0
  2. Вы можете использовать getarchives_where хук функции wp_get_archives ()

    Добавьте эту функцию в свой functions.php:

    function Cpt_getarchives_where_filter( $where , $r ) {
    
      $post_type = 'blog';
      return str_replace( "post_type = 'post'" , "post_type = '$post_type'" , $where );
    }
    

    Затем, когда вы хотите, чтобы ваш ежемесячный архив поместил это:

    add_filter( 'getarchives_where' , 'Cpt_getarchives_where_filter' , 10 , 2 );
    wp_get_archives();
    remove_filter('getarchives_where' , 'Cpt_getarchives_where_filter' , 10 );
    
    • 0

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

You must login to add an answer.