私のサイトでは以下のリンク構造を実現したいと思います。
properties
CPTの1ページ目のproperties
ページ。properties
CPTのproperties
ページ、2ページ。properties
ページ。property
というカスタム投稿タイプ(CPT)があります。次のように登録され、'rewrite' => array('slug' => 'properties', 'with_front' => false)
として指定されたrewrite
ルールに従います。
function property_post_type_init() {
$labels = array(
'name' => _x('Properties', 'post type general name'),
'singular_name' => _x('Property', 'post type singular name'),
'add_new' => _x('Add New', 'property')
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'rewrite' => array('slug' => 'properties', 'with_front' => false),
'query_var' => true,
'capability_type' => 'post',
'hierarchical' => false,
'show_in_nav_menus' => false,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'revisions'
)
);
register_post_type('property',$args);
スラッグproperties
を含むページもあり、パーマリンク構造は/%category%/%postname%/
に設定されています。
Properties
ページで、以下の引数を使用して新しいWP_Query
オブジェクトを作成します。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'property',
'orderby' => 'date',
'order' => 'DESC',
'paged' => $paged
);
return $args;
正しいURLでページ付けを正しく生成するカスタムのページ付けコード(functions.php内)を使用します。
<my-site>/properties/
<my-site>/properties/page/2/
<my-site>/properties/page/3/
しかし、ページネーション内の任意のページをクリックすると、404ページにリダイレクトされます。私はクエリパラメータを期待しており、それらは以下の通りです。
[page] => 2
[property] => page
[post_type] => property
[name] => page
これは正しくありません。これらのパラメータがどこから来ているのか理解できません。
[page] => 2
[property] => page
[name] => page
CPTを登録するときのrewrite
ルールと関係があることは間違いありません。
次の設定を正しく機能させるにはどうすればよいですか。
properties
カスタム投稿タイプをページ区切りで表示するproperties
ページ。'rewrite' => array('slug' => 'properties', 'with_front' => false)
ルールを持つproperties
カスタム投稿タイプ。/%category%/%postname%/
構造のパーマリンクだから私は次のリンク構造を持っている:
properties
CPTの1ページ目のproperties
ページ。properties
CPTのproperties
ページ、2ページ。properties
ページ。それが理にかなっていることを願っています。
ありがとう、ダーシャ
ページのスラッグを別のものに変更し、投稿タイプの登録をこれに変更してください。
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'has_archive' => true,
'show_ui' => true,
'rewrite' => array('slug' => 'properties', 'with_front' => false),
'query_var' => true,
'capability_type' => 'post',
'hierarchical' => false,
'show_in_nav_menus' => false,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'revisions'
)
);
有効な新しい引数は'has_archive'
です。これは3.1の新機能で、デフォルトで/properties/
、/properties/page/2
などの構造体になります。それからあなたの書き換え規則を洗い流し、それがそれを修正するかどうか確かめなさい。また、あなたが書いたコードをコメントアウトしたり、ルールを書き換えたりする必要があるかもしれません。