私はこのトピックについてたくさんの質問を読みました。それらのどれも私の問題を解決しません。
問題 :ページ付けは1ページ目に表示されますが、2ページ目は404を返します。
クエリとループはfront-page.phpにあります。
// WP_Query arguments
$args = array(
'post_type' => 'trabajo',
'posts_per_page' => '2',
'paged' => ( get_query_var('paged') ) ? get_query_var('paged') : 1,
);
// The Query
$trabajo_query = new WP_Query( $args );
$temp_query = $wp_query;
$wp_query = NULL;
$wp_query = $trabajo_query;
// The Loop
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
the_title();
}
}
wp_reset_postdata();
the_posts_navigation();
$wp_query = NULL;
$wp_query = $temp_query; // Reset
私はここで最終的な答えを見つけました: https://wordpress.stackexchange.com/a/217534/77722
フロントページの2ページ目は、私のカスタムクエリからではなく、メインクエリからページ付けをしていました。
私はこれらの行動を取りました:
1.ページがロードされるたびにメインのクエリを取得するために(pageginatedされていても)front-page.phpの名前をindex.php に変更する。
2. CPTの投稿を表示するために、pre_get_posts でメインクエリを変更するには、次の手順を実行します。
add_action( 'pre_get_posts', function ( $q ) {
if ( $q->is_home() && $q->is_main_query() ) {
$q->set( 'posts_per_page', 1 );
$q->set( 'post_type', 'trabajo');
}
});
3. index.phpで通常のループを行います。
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
the_title();
}
}
wp_reset_postdata();
the_posts_navigation();
完璧に動作します!
私はここで回避策を見つけました: カスタム投稿タイプのページ付け404修正?
私はそれを理解していないので、この質問を解決済みとマークしません。これについてのどんな説明も理解されるでしょう。
私は2つの行動を一緒にしなければなりません:
1
を投稿制限に設定します。。
add_action( 'parse_query','changept' );
function changept() {
if( !is_admin() )
set_query_var( 'post_type', array( 'post', 'trabajo' ) );
return;
}
それはうまくいきますが、どんな副作用がこれをもたらすかわかりません。