未捕获的错误:在 url 中找不到类 'WP_Query' - Wordpress

Posted

技术标签:

【中文标题】未捕获的错误:在 url 中找不到类 \'WP_Query\' - Wordpress【英文标题】:Uncaught Error: Class 'WP_Query' not found in url - Wordpress未捕获的错误:在 url 中找不到类 'WP_Query' - Wordpress 【发布时间】:2018-06-30 15:29:07 【问题描述】:

我创建了一个在页面中传递 ID 的 ajax 文件。并且该页面有一个查询。我得到了一个错误。我试图知道我的错误是什么,有些网站说我必须定义我的模板并需要 wp-load.php,但有些网站说我必须在 function.php 上做。我真的不知道该怎么办。我是 wordpress woocommerce 的新手。

未捕获的错误:在 xxxx/xxxx 中找不到类“WP_Query”

这是我的页面 (get-fabric.php)

   <?php  


    if(!empty($_POST['select_colour']))
    
        $args = array(
        'post_type'      => 'product',
        'posts_per_page' => 1000,
        'product_cat'    => 'fabric'


        );

        $query = new WP_Query($args);


            while ( $query->have_posts() ) : $query->the_post();
            global $product;
            $regular_price = $product->get_price_html();

            $image = wp_get_attachment_image_src( get_post_thumbnail_id( $query->post->ID ), 'product' );
                echo '  <div class="col-md-3 fabric-active" data-fabcode="32860">
                <div class="fabric-cloth">
                    <div class="fabric-data">
                        <img src="'.$image[0].'" class="img-responsive cursor-on" />
                        <div class="fabric-code">
                            <p>'.$product->post->post_title.'</p>
                            <span>'.$regular_price.'</span>
                        </div>
                    </div>
                </div>
            </div>';
            endwhile;

    wp_reset_query();
    ?>
    <div class="col-md-3 fabric-active" data-fabcode="32860">
                <div class="fabric-cloth">
                    <div class="fabric-data">
                        <img src="'.$image[0].'" class="img-responsive cursor-on" />
                        <div class="fabric-code">
                            <p>'.$product->post->post_title.'</p>
                            <span>'.$regular_price.'</span>
                        </div>
                    </div>
                </div>
            </div>
  <?php
     
  ?>

【问题讨论】:

您的代码中还有其他一些错误。 1)你应该用$product = wc_get_product($query-&gt;post-&gt;ID);替换global $product;…2)你应该用$query-&gt;post-&gt;post_title替换$product-&gt;post-&gt;post_title 好的 LoicTheAztec 我已经改了,谢谢兄弟的帮助 【参考方案1】:

如果您直接调用此 url,这不是 WordPress ajax 的预期工作方式,您仍然可以通过添加此 php 代码来运行此代码

$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );

到文件的顶部。

https://codex.wordpress.org/AJAX_in_Plugins 我知道这在插件中说 Ajax,但如果开发一个自定义主题来保持你的代码 WordPress-y,这也是你会做的。

【讨论】:

感谢 JasonB 的快速响应,我试着把它放进去,它可以工作。但是我可以知道放置这些代码是安全的吗?因为我发现一些网站不安全?我已经看到了那个链接,但我真的不知道我该怎么做。检查我的其他问题以查看我的 ajax 文件 [链接](***.com/questions/48373453/…) 你只需要做一些功课。使用 WP codex 和 PHP 文档并了解代码在做什么。此答案中的两行代码只是从您自己的站点加载文件 wp-load.php ,因此它们不会自行引入任何错误。您应该使用框架的方法来创建 ajax 请求并使用 nonce 来帮助确保请求有效。也看到这个:wordpress.stackexchange.com/questions/214587/… 如果你有更多的东西连接起来并且可以工作,但有一个特定的安全或安全问题,我会把它作为一个新问题发布。 感谢兄弟的帮助。可悲的是,他们只是把这种项目交给了我,而我是 wordpress 的新手。所以我真的不知道该怎么做,他们只给我 1 个月的时间来完成它。【参考方案2】:

您创建的页面与 WordPress 无关。您既没有包含任何内容,也没有声明任何全局变量。在这种情况下,不仅是 WP_Query,它永远不会找到任何 WordPress 方法。

对于这种情况,有两种解决方案

    (推荐)使用相应的函数包含页眉和页脚。

    get_header() && get_footer()

    使用前声明全局变量。

    全局 $wp_query;

希望这对你有所帮助:)

【讨论】:

以上是关于未捕获的错误:在 url 中找不到类 'WP_Query' - Wordpress的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:未捕获的错误:在 C:\xampp\htdocs\code\project\routes\web.php:18 中找不到类 'Route'

PHP 致命错误:未捕获的错误:在 /home/khadija/InstProject/bootstrap/app.php:14 中找不到类“Illuminate\Foundation\Applica

致命错误:未捕获的错误:未找到类“用户名”

在 docker php 容器中找不到 MySQLi

Symfony2 - 在链配置的命名空间中找不到类“X”

Laravel - 致命错误:未捕获的错误:找不到类'Auth'