Posts ausgeben, die sich auf die Tags beziehen

Lesezeit: 4 Minuten

ich benutze WordPress 3.9 und WooCommerce 2.1.8und ich möchte wissen, wie ich eine einzelne Zeile mit vier verwandten Beiträgen anzeigen kann, die der Benutzer gerade ansieht, was relativ zu ist Schild oder Stichworte der Post, anstatt der Kategorie es ist in.

Idealerweise möchte ich vier Produkte ausstellen, die sich auf die beziehen Stichworte des Artikels, der derzeit unten auf meinen einzelnen Produktseiten angezeigt wird, insbesondere jedes einzelne der zugehörigen Bilder oder Miniaturansichten des entsprechenden Beitrags sowie die Preise. Wenn möglich, eine Lösung auch aus dem Skript Funktionen.php Datei.

Der folgende Code ist das, was ich bisher habe, der die verwandten anzeigt Kategorien der Post, statt der Stichworte es basiert auf:

    add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);

    function woocommerce_output_related_products() {
        $output = null;

        ob_start();

        woocommerce_related_products(array(
            'columns' => 4, 
            'posts_per_page' => 4,
            'post_type' => 'product',
            'fields' => 'ids',
            'meta_query' => $meta_query,
            'tax_query' => array(
               'relation' =>  'AND',
                 array(
                    'taxonomy' => 'product_cat',
                    'field' => 'id',
                    'terms' => $cats_array
                ), 
                array(
                    'taxonomy' => 'product_tag',
                    'field' => 'id',
                    'terms' => $tags_array
                )
            )
        )); 

        $content = ob_get_clean();
        if($content) { $output .= $content; }

        echo '<div class="clear"></div>' . $output;

    } 

Jede Hilfe wäre sehr willkommen,
Vielen Dank.

Benutzer-Avatar
Daniel

Es gibt einen anderen Filter, woocommerce_related_products_args in /templates/single-product/related.php Vorlagendatei, die Ihr Abfragearray überschreibt.

Eine mögliche Lösung ist das Überschreiben related.php Vorlage, erstellen Sie eine neue Vorlage und führen Sie benutzerdefinierte aus WP_Query dort, dann fügen Sie diese Vorlage mit ein wc_get_template() Funktion.

Die andere besteht darin, eingebaute Filter zu nutzen (es gibt eine ganze Reihe davon). Ich werde versuchen, diese Filter hier in der Reihenfolge ihrer Ausführung zu erklären, was ihr Zweck ist und wie sie verwendet werden.


woocommerce_output_related_products_args

Der erste Filter zum Setzen der woocommerce_related_products() Funktionsargumente. Die Funktion wird geladen related.php Template und übergebene Argumente sind die globalen Optionen für das Template. Argumente sind "posts_per_page", "columns" und "orderby".

/* An example of how to set the four products per page */
add_filter( 'woocommerce_output_related_products_args', function( $args ) 
{ 
    $args = wp_parse_args( array( 'posts_per_page' => 4 ), $args );
    return $args;
});

Am Anfang des Templates befindet sich die WooCommerce $product Objekt sucht die verwandten Produkte nach Kategorie und Tag. Das Ergebnis ist ein Array von Post-IDs, das später für die verwendet wird post__in Klausel in der Hauptabfrage. Es stehen einige Filter zur Verfügung.

woocommerce_product_related_posts_relate_by_category

Es wird verwendet, um die verwandten Produkte nach Kategorie auszuschließen.

add_filter( 'woocommerce_product_related_posts_relate_by_category', function() {
    return false;
});

woocommerce_product_related_posts_relate_by_tag

Schließen Sie die verwandten Produkte nach Tag aus.

add_filter( 'woocommerce_product_related_posts_relate_by_tag', function() {
    return false;
});

woocommerce_product_related_posts_query

Um eine letzte Änderung der Abfrageteile vorzunehmen.

add_filter( 'woocommerce_product_related_posts_query', function( $query ) {
    // modify $query array
    return $query;
});

Der letzte Filter, der die Möglichkeit bietet, die Parameter für die Hauptabfrage zu ändern, ist woocommerce_related_products_args.

woocommerce_related_products_args

Seitdem basiert die Abfrage auf post__in -Klausel, entfernen Sie diesen Teil und fügen Sie Ihre benutzerdefinierten Abfrageteile hinzu.

add_filter( 'woocommerce_related_products_args', function( $args ) 
{
    unset( $args['post__in'] );
    $args['tax_query'] = array( /* taxonomy parameters */ );
    return $args;
});

Ein Beispiel für die Anzeige von vier verwandten Produkten in Bezug auf die Tags.

add_filter( 'woocommerce_output_related_products_args', function( $args ) 
{ 
    $args = wp_parse_args( array( 'posts_per_page' => 4 ), $args );
    return $args;
});

add_filter( 'woocommerce_product_related_posts_relate_by_category', function() {
    return false;
});

Ein paar Tipps, die hilfreich sein könnten:

Wenn Sie sich nicht sicher sind, welche Standardargumente in jedem Filter-Hook übergeben werden, verwenden Sie einfach print_r darauf, um die Werte im Browser anzuzeigen. Auch ein Blick in die WooCommerce-Quelldateien verdeutlicht einiges. Und schließlich ist es oft nicht nötig, die standardmäßigen WooCommerce-Funktionen vollständig zu überschreiben, da sich die Ersteller des Plugins mit all diesen Filtern wirklich die Mühe gemacht haben, die Dinge einfacher zu machen.

  • Ich habe die Antwort so gut ich kann umgeschrieben, also hoffe ich, dass die Dinge jetzt klarer werden.

    – Daniel

    27. Mai 2014 um 15:28 Uhr


  • Notiere dass der woocommerce_related_products_args Filterhaken existiert nicht mehr.

    – Philipp Bammes

    25. Februar 2020 um 10:08 Uhr


1384310cookie-checkPosts ausgeben, die sich auf die Tags beziehen

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

Privacy policy