web-dev-qa-db-ja.com

カスタムパーマリンクを使用した日付別カスタム投稿タイプアーカイブ

私は、カスタム投稿タイプ(CPT)アーカイブのカスタムパーマリンクを機能させることに少しこだわっています。

私は次のように私の 'press_release' CPTを登録しました:

add_action('init', 'press_release_post_type_init');
function press_release_post_type_init() {
  $labels = array(
    'name' => _x('Press Releases', 'post type general name'),
    'singular_name' => _x('Press Release', 'post type singular name'),
    'add_new' => _x('Add New', 'Press Release'),
    'add_new_item' => __('Add New Press Release'),
    'edit_item' => __('Edit Press Release'),
    'new_item' => __('New Press Release'),
    'view_item' => __('View Press Release'),
    'search_items' => __('Search Press Releases'),
    'not_found' =>  __('No press release found'),
    'not_found_in_trash' => __('No press release found in Trash'), 
    'parent_item_colon' => ''
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'has_archive' => 'press-release',
    'rewrite' => array('slug' => 'press-release/%year%/%postname%','with_front' => false),
    'query_var' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'show_in_nav_menus' => false,
    'menu_position' => 20,
    'supports' => array(
      'title',
      'editor',
      'author',
      'revisions'
    )
  );
  register_post_type('press_release', $args);
}

現時点でURL http://mysite.press-releaseにアクセスすると、正しいarchive-press_release.phpテンプレートが表示されます。

ただし、CPTアーカイブのパーマリンクをpress-release/%year%型にしたいと思います。

CPTを登録するときに、上記のパーマリンク構造を指定しようとしました。

'has_archive' => 'press-release/%year%'

ただし、このパーマリンク構造では、どちらの場合もhttp://mysite.press-releaseまたはhttp://mysite.press-release/2011に移動すると、アーカイブではなくindex.phpテンプレートにリダイレクトされます。

WordPressに任意の年の部分を含むpress-release/%year%パーマリンクが実際にアーカイブテンプレートであることを理解させるために何を追加しますか?

どうぞよろしくお願いします。それが可能であることを願っています。

正しい年のレコードを取得するためにarchive-press_release.phpに自分のSQLを構築することを計画していました。

ありがとう、ダーシャ

5
dashaluna

これが解決策です。

  1. インストール カスタム投稿タイプアーカイブ plugin
  2. [設定] - > [投稿タイプのアーカイブ]を選択します。
    1. URLベースオプションを削除します(空白のままにします)。
    2. テンプレートパターンをarchive-{POST_TYPE}.phpに変更します
    3. カスタム投稿タイプにチェックを付けて[保存]をクリックします
  3. カスタムパーマリンク構造を書き換える/保存する

今すぐあなたのリンクpress-release/%year%press-release/%year%/%month%は動作するはずです。

0
chodorowicz