1

カスタム投稿タイプがあります。「仕事」としましょう。仕事の下にいくつかのカテゴリ、'taskA' と 'taskB' があります。カテゴリ taskA にはいくつかの投稿 {post1, post2, post3} があり、カテゴリ taskB にはいくつかの投稿 {post4,post5,post6} があります。

すべての投稿を一覧表示したい@mydomain.com/work ということでタイトル作品のページを作りました。そして、すべての投稿をリストしました。

「仕事」の下にあるすべての投稿には、URL が含まれている必要がありmydomain.com/work/post1ます。ページネーションを機能させるまで、すべてが正常に機能していました。URL にアクセスするとmydomain.com/work/page/1、エラー 404 がスローされます。

rewrite slug を「works」に変更すると、エラー 404 が解決されます。

目的の URL 構造を維持するには、どのようなアプローチに従う必要がありますか?

また、「taskA」の下にすべての投稿を一覧表示したい @ mydomain.com/work/taskA rewrite slug を「work」として使用しても役に立たなかった。rewrite slug を「work-task」として使用すると、すべてが正常に機能しているように見えます。しかし、URL は次のように見えmydomain.com/work-task/taskA ます。

4

1 に答える 1

2

解決策を見つけました!

ページ作品を削除しました。また、カスタム ページ テンプレートからすべての投稿を表示する代わりに、archive.php から表示しました。ページネーションはこの段階で動き始めます。

Taxonomy では、slug を「work」に変更し、functions.php に次のコードを追加しました。

add_filter( 'rewrite_rules_array', 'blog_rewrite_rules' );
function blog_rewrite_rules( $rewrite_rules )
{
  $topics = get_terms('work-category', array('hide_empty' => true));
  if(is_wp_error($topics))
    return $rewrite_rules;

  $newRules = array();

  foreach($topics as $topic){
    $newRules['work/'.$topic->slug.'/page/?([0-9]{1,})/?$'] = 'index.php?work-category='.$topic->slug.'&paged=$matches[1]';
    $newRules['work/'.$topic->slug.'/?$']                   = 'index.php?work-category='.$topic->slug;  
  }

  return array_merge($newRules,$rewrite_rules);
}

URL 構造が維持され、ページネーションも機能します。

于 2013-09-23T14:28:43.260 に答える