将网站迁移到wordpress希望重定向旧网址
所以我做了一个捕获404的函数,寻找一个与URL中的数字匹配的元值,然后进行重定向。
直到用户发布新文章并将其置为粘性后,该查询才像魅力一样起作用,然后该查询将返回该置顶帖子,而忽略了元查询
我尝试了很多方法来更正此问题,而这些问题不像'suppress_filters' => true
'post__not_in' => get_option( 'sticky_posts' )
中的可以达到目的,但事实并非如此。 (如果我想发的那个贴子很粘,那就找不到了!)
那么我该如何做一个WP_Query来通过元查询获取帖子并且不注入粘性帖子?
add_action( 'template_redirect', 'wpd_do_stuff_on_404' );
function wpd_do_stuff_on_404(){
if( is_404() ){
$url = $_SERVER['REQUEST_URI'];
if (preg_match('/\/(\d+)-[^\/]*$/', $url, $matches) ) {
// looks like a dc post, lets try to find a post using dc_post_id
$dc_post_id = intval($matches[1]);
$args = array(
'meta_query' => array(
array(
'key' => 'dc_post_id',
'value' => '' . $dc_post_id,
'compare' => '=',
)
),
'suppress_filters' => true,
'posts_per_page' => 1,
);
$q = new WP_Query($args);
if ( $q->post_count == 1 && $q->max_num_pages == 1 ) {
wp_redirect( get_permalink( $q->posts['0']->ID ), 301 );
exit;
}
}
}
}
编辑: