Nicht erfasster Fehler: Klasse „WP_Query“ nicht in URL gefunden – WordPress

Lesezeit: 4 Minuten

Ich habe eine Ajax-Datei erstellt, die die ID auf der Seite übergibt. und diese Seite hat eine Abfrage. und ich habe einen Fehler. Ich versuche zu wissen, was mein Fehler ist, und einige Sites sagten, ich müsse meine Vorlage definieren und die wp-load.php benötigen, aber einige Sites sagten, dass ich es auf function.php tun muss. und ich weiß echt nicht was ich machen soll. Ich bin neu in WordPress WooCommerce.

Nicht erfasster Fehler: Klasse „WP_Query“ nicht gefunden in xxxx/xxxx

Hier ist meine Seite (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
     }
  ?>

  • Es gibt einige andere Fehler in Ihrem Code. 1) Sie sollten ersetzen global $product; durch $product = wc_get_product($query->post->ID); … 2) sollten Sie ersetzen $product->post->post_title durch $query->post->post_title

    – LoicTheAztec

    22. Januar 2018 um 3:24 Uhr

  • Okay, LoicTheAztec, ich habe es bereits geändert, danke für die Hilfe, Bruder

    – Benutzer3678152

    22. Januar 2018 um 3:41 Uhr

Wenn Sie diese URL direkt aufrufen, was nicht der Art und Weise entspricht, wie WordPress Ajax funktionieren soll, können Sie diesen Code trotzdem zum Laufen bringen, indem Sie diesen PHP-Code hinzufügen

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

an den Anfang der Datei.

https://codex.wordpress.org/AJAX_in_Plugins Ich weiß, dass dies Ajax in Plugins sagt, aber das ist auch das, was Sie tun würden, wenn Sie ein benutzerdefiniertes Design entwickeln, um Ihren Code WordPress-y zu halten.

  • Danke JasonB für die schnelle Antwort, ich habe versucht, es zu sagen, und es funktioniert. aber kann ich wissen, dass es sicher ist, diesen Code zu setzen? weil ich eine Seite gefunden habe, die nicht sicher ist?. und ich habe diesen Link schon gesehen, aber ich weiß wirklich nicht, wie ich das machen soll. um meine andere Frage zu überprüfen, um meine Ajax-Datei zu sehen https://stackoverflow.com/questions/48374145/uncaught-error-class-wp-query-not-found-in-url-wordpress(stackoverflow.com/questions/48373453/…)

    – Benutzer3678152

    22. Januar 2018 um 3:27 Uhr


  • Du musst nur ein paar Hausaufgaben machen. Verwenden Sie den WP-Codex und die PHP-Dokumentation und erfahren Sie, was der Code tut. Die beiden Codezeilen in dieser Antwort laden nur die Datei wp-load.php von Ihrer eigenen Website, damit sie selbst keine Fehler einführen. Sie sollten die Methoden des Frameworks zum Erstellen von Ajax-Anfragen und Nonces verwenden, um sicherzustellen, dass die Anfrage gültig ist. Siehe auch: wordpress.stackexchange.com/questions/214587/…

    – JasonB

    22. Januar 2018 um 3:37 Uhr

  • Wenn Sie noch mehr verkabelte und funktionierende Dinge haben, aber eine bestimmte Sicherheitsfrage haben, würde ich sie als neue Frage posten.

    – JasonB

    22. Januar 2018 um 3:39 Uhr

  • Danke für die Hilfe Bruder. Leider übergeben sie diese Art von Projekt einfach an mich, und ich bin neu bei WordPress. Also weiß ich wirklich nicht, wie ich es machen soll, und sie geben mir nur 1 Monat, um es fertigzustellen.

    – Benutzer3678152

    22. Januar 2018 um 3:45 Uhr

Die von Ihnen erstellte Seite hat keine Beziehung zu WordPress. Weder schließen Sie etwas ein, noch haben Sie globale Variablen deklariert. In diesem Fall wird nicht nur WP_Query, sondern niemals eine WordPress-Methode gefunden.

Für diesen Fall gibt es 2 Lösungen

  1. (Empfohlen) Fügen Sie Kopf- und Fußzeilen ein, indem Sie die entsprechenden Funktionen verwenden.

    get_header() && get_footer()

  2. Deklarieren Sie die globale Variable, bevor Sie sie verwenden.

    global $wp_query;

Hoffe das hilft dir irgendwie 🙂

1353480cookie-checkNicht erfasster Fehler: Klasse „WP_Query“ nicht in URL gefunden – WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy