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

时间:2018-01-22 03:02:34

标签: php ajax wordpress woocommerce

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

  

未捕获错误:类' WP_Query'在xxxx / xxxx中找不到

这是我的页面(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
     }
  ?>

2 个答案:

答案 0 :(得分:3)

如果你直接调用这个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,这也是你要做的。

答案 1 :(得分:0)

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

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

  1. (推荐)使用各自的功能包括页眉和页脚。

    get_header()&amp;&amp; get_footer()

  2. 在使用之前声明全局变量。

    全球$ wp_query;

  3. 希望这可以帮助你:)