web-dev-qa-db-ja.com

カスタム投稿タイプの毎月のアーカイブを取得する

これはかなり一般的なトピックですが、私が抱えている問題を解決することはできないようです。どんな助けでも大歓迎です、私はこの時点で私の車輪を回しています。

カスタム投稿タイプUIプラグインを使用して、私はいくつかのカスタム投稿タイプを作成しました(この例では 'blog'を使用します)。私はhas_archive => trueをセットし、そして私のページ付けを適切に機能させるためにカスタムポストタイプアーカイブと呼ばれるプラグインも使用しました。これまでのところ、私はパーマリンク、タグ、カテゴリ、およびページ付けを機能させています。しかし、問題は、wp_get_archives関数を使用しようとしたときです。私はこれがCPTをつかまないことを理解しているので、私はカスタム投稿タイプアーカイブプラグイン(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',
    ),) );
3
Redlist

wp_get_archives() functionのgetarchives_whereフックを使用できます

この関数を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 );
3
Bainternet