Wie erstelle ich eine funktionierende benutzerdefinierte Produktabfrage in WooCommerce?

Lesezeit: 4 Minuten

Benutzeravatar von Jason Is My Name
Jason ist mein Name

Ich habe Schwierigkeiten beim Erstellen meiner eigenen benutzerdefinierten WooCommerce-Produktschleife.

Dabei bin ich auf einige Fragen gestoßen, die sehr hilfreich wären, wenn sie beantwortet werden könnten.

Ich arbeite derzeit mit diesem Codeblock:

ARCHIV-PRODUKT.PHP (In Child-Theme verschoben -> woocommerce/archive-product.php):

<?php
/**
 * @see https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce/Templates
 * @version 3.4.0
 */

defined( 'ABSPATH' ) || exit;

get_header();

$display_count = $atts['per_page'];
echo $display_count; // NO value - How do I access this?
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo $page; // returns 1 - CORRECT;
$offset = ( $page - 1 ) * $display_count;
echo $offset; // returns 0 - CORRECT;
$args = array(
    'post_type'             => 'product',
    'post_status'           => 'publish',
    'posts_per_page'        => $atts['per_page'],
    'page'                  => $page,
    'offset'                => $offset,
    'orderby'               => $atts['orderby'],
    'order'                 => $atts['order']
); ?>

<?php
$loop = new WC_Product_Query( $args );
if ( $loop->have_posts() ) :

    // do_action( 'woocommerce_before_shop_loop' );

    woocommerce_product_loop_start();
?>

    <div id="product-list">

        <?php
        while ( $loop->have_posts() ) :

            $loop->the_post();

            wc_get_template_part( 'content', 'product' );

        endwhile;
        ?>

    </div>

    <?php
    woocommerce_product_loop_end();

    do_action( 'woocommerce_after_shop_loop' );

else :

    do_action( 'woocommerce_no_products_found' );

endif;

wp_reset_postdata();

do_action( 'woocommerce_after_main_content' );

do_action( 'woocommerce_sidebar' );

get_footer(); ?>

Vielleicht ist mein Fehler sofort offensichtlich.

Während ich durch meinen Code gehe, werde ich die Fragen hervorheben, auf die ich gestoßen bin und auf die ich keine Antworten finden kann.

Beginnend mit der Zeile:

$display_count = $atts['per_page'];
echo $display_count; // NO value - How do I access this?

Meinem Verständnis nach waren diese Variablen ($atts['per_page'], $atts['order_by'], $atts['order']) wurden hier eingefügt: /includes/class-wc-shortcodes.php.

Ich kann dieses Attribut jedoch nur für einzelne Produktseiten eingerichtet sehen, es sei denn, ich irre mich?

Darf ich die in $atts eingerichteten Variablen verwenden?[]? Dies gilt auch für die Verwendung dieser Variablen weiter unten auf der Seite im $args-Array

Wie richte ich diese ein, damit ich sie verwenden kann?

Wo werden diese Werte gespeichert und geändert?

Sind diese Variablen beim Schreiben eines benutzerdefinierten AJAX-Paginierungsskripts in die Datei functions.php auch hier verfügbar? Wenn nicht, wie kann ich diese einrichten?

$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo $page; // returns 1 - CORRECT;

Eine Seitenvariable einrichten, die mir hilft, den Überblick über die Seite zu behalten, auf der ich mich befinde.

$offset = ( $page - 1 ) * $display_count;
echo $offset; // returns 0 - CORRECT;

Das Erstellen der Offset-Variablen, die in die Argumente eingefügt werden soll, damit angegeben werden kann, wie viele Produkte versetzt werden, ist bei der Paginierung sehr praktisch.

$loop = new WC_Product_Query( $args );

Erstellen der Schleife von Produkten, die mit den bereitgestellten $args verknüpft sind.

Ist dies der beste zu verwendende Abfragehandler? Ich habe eine Menge anderer gesehen, wie zum Beispiel:

$loop = new WP_Query( $args );
$loop = wc_get_products( $args );

Das hintere Ende des Codes Ich versuche nur, die gefundenen Produkte auszugeben, indem so viel wie möglich von der WooCommerce-Basisvorlagenstrukturierung verwendet wird.

BEARBEITEN: Idealerweise würde es mir auch zeigen, wie ich die WooCommerce-Schleife nutzen kann, da ich ein Plug-In-Add-On zum WooCommerce-Plug-In verwendet habe, das mir hilft, die Produkte in einer benutzerdefinierten Bestellung neu zu bestellen. Es ist diese benutzerdefinierte Produktliste, die ich durchziehen möchte.

  • Der Beitrag enthält mehrere Fragen und sieht eher aus wie ein Blog. Hast du deine Antworten bekommen? Würde es Ihnen etwas ausmachen, sie mit der Community zu teilen?

    – Lenin

    28. September 2021 um 1:23 Uhr

Grundlegende Abfrage zum Durchlaufen von WooCommerce-Produkten

<ul class="products">
<?php
$args = array(
    'post_type'   => 'product',
    'post_status' => 'publish',
    'posts_per_page' => -1,  // -1 will get all the product. Specify positive integer value to get the number given number of product
    );
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) : $the_query->the_post();

        // Get default product template
        wc_get_template_part( 'content', 'product' );

    endwhile;
} else {
    echo __( 'No products found' );
}
wp_reset_postdata();
?>
</ul>

  • Ich suche hier nicht nach einer grundlegenden Antwort, Kumpel. Idealerweise würde es mir auch zeigen, wie ich die WooCommerce-Schleife nutzen kann, da ich ein Plug-In-Add-On zum WooCommerce-Plug-In verwendet habe, das mir hilft, die Produkte in einer benutzerdefinierten Bestellung neu zu bestellen. Es ist diese benutzerdefinierte Produktliste, die ich durchziehen möchte.

    – Jason ist mein Name

    29. Januar 2020 um 9:03 Uhr

1427280cookie-checkWie erstelle ich eine funktionierende benutzerdefinierte Produktabfrage in WooCommerce?

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

Privacy policy