GET_POST($args)返回空数据

时间:2020-03-04 作者:Martin Edlman

我正在编写插件,用于将WooCommerce产品的价格与外部源同步。所以我想得到带有EAN的产品(有元数据_wpm_gtin_code). 我传递给谁get_posts($args) 我得到的是空数据。我正在使用WordPress 5.3.2。

我潜入WP source追踪原因。打印生成的SQL时$this->requestwp-includes/class-wp-query.php:2890 我看到它包含“where条件”AND (0 = 1) 这显然不可能成功。这段代码由wp-includes/class-wp-query.php:2101-2109, 明确由$clauses = $this->tax_query->get_sql( $wpdb->posts, \'ID\' ); $where .= $clauses[\'where\'];.

我没有深入研究$this->tax_query->get_sql(...). 我所知道的是,我没有将任何分类学参数传递给get_posts($args), 所以我不希望它影响查询。

我该怎么打电话get_posts($args) 获取所有类型和状态的帖子?

        $meta_query = array(
            \'relation\' => \'OR\',
            array(
                \'key\'       => \'_wpm_gtin_code\',
                \'compare\'   => \'EXISTS\'
            ),
            array(
                \'key\'       => \'_product_code\',
                \'compare\'   => \'EXISTS\'
            )
        );
        $args = array(
            \'meta_query\' => $meta_query,
            \'post_type\' => \'product\',
            \'post_status\' => \'publish\',
            \'posts_per_page\' => -1,
        );
        error_log(print_r($args, true)); // print args
        $posts = get_posts( $args );
        error_log(print_r($posts, true)); // print posts - empty!!!

1 个回复
SO网友:Martin Edlman

整个问题都在WooCommerceCategoryExcluder (旧的、过时的和未维护的)插件pre_get_posts 并将分类查询添加到get_posts() args。

也许这项调查有助于其他试图解决类似问题的人。

相关推荐