wake-up-neo.net

Wie ändere ich den Inhalt von Woocommerce Breadcrumbs?

Ich möchte die Breadcrumbs direkt aus PHP anpassen. Einige der Seiten werden dynamisch generiert und sind nicht in der Datenbank vorhanden. Daher muss ich sie automatisch mit einer Art PHP -Skript in die Breadcrumbs einfügen.

Ich muss keine Standardeinstellungen ändern, wie die Homepage-URL, Trennzeichen usw., aber ich muss tatsächlich einige Seiten manuell in die Breadcrumbs einfügen. Ich habe versucht, mit einigen Filterungen und einigen Haken.

Ich habe die Dokumentation gelesen aber es erklärt nur, wie man Standardmaterial ändert.

Wie kann ich den tatsächlichen Inhalt der Semmelbrösel ändern?

Ich habe es versucht:

add_filter( 'woocommerce_breadcrumb', 'change_breadcrumb' );
function change_breadcrumb( $defaults ) {
    // Change the breadcrumb home text from 'Home' to 'Appartment'
    //do something
    return $defaults;
}

Aber der //do something wird niemals ausgeführt. Es ist so, als würde dieser Filter niemals aufgerufen

2
Alberto Fontana

Das liegt daran, dass Ihr Filter woocommerce_breadcrumb gar nicht existiert.

Dieser Filter hier funktioniert und zieht alle Elemente heraus, die sich derzeit im Breadcrumb befinden (als Array):

add_filter( 'woocommerce_get_breadcrumb', 'change_breadcrumb' );
function change_breadcrumb( $crumbs ) {
    var_dump( $crumbs );

    return $crumbs;
}

Und dieser Filter zieht den main term (als Objekt) heraus.

add_filter( 'woocommerce_breadcrumb_main_term', 'change_breadcrumb' );
function change_breadcrumb( $main_term ) {
    var_dump( $main_term );

    return $main_term;
}

Der 'main term' ist nur das erste Element, das von dieser Funktion zurückgegeben wird ( reference ):

$terms = wc_get_product_terms( $post->ID, 'product_cat', array( 'orderby' => 'parent', 'order' => 'DESC' ) )

Informationen zu allen Hooks und Filtern finden Sie in der Action and Filter Hook-Referenz by woothemes.

3
honk31

Diese Lösung verbirgt die Kategorie vor Breadcrumb- und Store-Navigation

add_filter( 'wp_get_object_terms', 'my_get_object_terms', 10, 4 );
function my_get_object_terms( $terms, $object_ids, $taxonomies, $args ) {
    $new_terms = array();

    // if a product category and on the shop page
    if (! is_admin() ) {
        foreach ( $terms as $key => $term ) {
            if ($term->slug !== 'all-products') {
                $new_terms[] = $term;
            }
        }

        $terms = $new_terms;
    }

    return $terms;
}
0
Mookie