pre_get_posts() 阻止页面在 WordPress 中工作
pre_get_posts() stops pages from working in WordPress
我有一个基于 320 WP-Bootstrap 主题的 WordPress 网站,带有自定义 post 类型的视频。我正在使用 pre_get_posts() 将自定义 post 类型包含在主循环中,效果很好。
使用以下功能时,页面链接停止工作,重定向到 404 页面。
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
if ( (!is_admin()) && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'video' ) );
return $query;
}
我已经隔离了对函数文件所做的所有更改。没有这个查询,页面链接工作正常。
非常感谢任何帮助。
您正在检查您是否在管理页面上并执行主要查询,这很好。您缺少的部分是检查您是否在存档中。
目前,无论您的原始查询是什么,您都会告诉它将 post 类型设置为 post 和视频。当您访问页面时,查询从页面更改为 post+video,这会导致 404.
尝试以下操作:
function add_my_post_types_to_query( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
// Check we're on an archive page.
if ( $query->is_archive ) {
$query->set( 'post_type', array( 'post', 'video' ) );
}
}
return $query;
}
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
我有一个基于 320 WP-Bootstrap 主题的 WordPress 网站,带有自定义 post 类型的视频。我正在使用 pre_get_posts() 将自定义 post 类型包含在主循环中,效果很好。
使用以下功能时,页面链接停止工作,重定向到 404 页面。
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
if ( (!is_admin()) && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'video' ) );
return $query;
}
我已经隔离了对函数文件所做的所有更改。没有这个查询,页面链接工作正常。
非常感谢任何帮助。
您正在检查您是否在管理页面上并执行主要查询,这很好。您缺少的部分是检查您是否在存档中。
目前,无论您的原始查询是什么,您都会告诉它将 post 类型设置为 post 和视频。当您访问页面时,查询从页面更改为 post+video,这会导致 404.
尝试以下操作:
function add_my_post_types_to_query( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
// Check we're on an archive page.
if ( $query->is_archive ) {
$query->set( 'post_type', array( 'post', 'video' ) );
}
}
return $query;
}
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );