中继上的WP_Query返回精选帖子(不匹配中继查询)

时间:2019-09-18 01:05:52

标签: wordpress

将网站迁移到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;
            }
        }
    }
}

编辑:

将问题迁移到https://wordpress.stackexchange.com/questions/348769/wp-query-on-meta-returns-featured-posts-not-matching-meta-query

0 个答案:

没有答案