Support » WooCommerce » Leere Platzhalter bei ausverkauften Produkten

  • Gelöst tobi3005

    (@tobi3005)


    Hallo,
    ich habe seit längerem das Problem, dass ausverkaufte Produkte zwar, wie eingestellt, nicht angezeigt werden, dafür aber dann im Shop Seiten existieren, die keine oder nur ein oder zwei Produkte anzeigen. Die ausverkauften Produkte werden einfach nur ausgeblendet, aber die verfügbaren nicht „nachgeschoben“. Etwas tricky zu erklären, ich bin auch schon länger auf der Suche nach einer Lösung.

    • Dieses Thema wurde geändert vor 3 Jahren, 11 Monaten von tobi3005.

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Probier mal, mit dem Plugin Code Snippets folgendes Codeschnipselchen einzufügen und aktiviern:

    add_filter( 'wp_get_nav_menu_items', 'nav_remove_empty_category_menu_item', 10, 3 );
    function nav_remove_empty_category_menu_item ( $items, $menu, $args ) {
        global $wpdb;
        $nopost = $wpdb->get_col( "SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE count = 0" );
        foreach ( $items as $key => $item ) {
            if ( ( 'taxonomy' == $item->type ) && ( in_array( $item->object_id, $nopost ) ) ) {
                unset( $items[$key] );
            }
        }
        return $items;
    }

    (Quelle: Stackexchange)

    Kommst du damit zurecht?

    Thread-Starter tobi3005

    (@tobi3005)

    Hi Bego,
    danke für die blitzschnelle Antwort. Leider hat der Code keinen Effekt auf das Verhalten. Ist das normal mit den ausgeblendeten Produkten oder habe ich irgendeinen Fehler? Das ist ja ein Zustand so…

    Thread-Starter tobi3005

    (@tobi3005)

    Ok, ich habe mir jetzt einen Code gebastelt, welcher anscheinend funktioniert:

    // exclude sold out products
    add_action( 'woocommerce_product_query', 'exclude_sold_out' );
    function exclude_sold_out( $q ) {
        if (is_shop() || is_product_category()) {
            $oos_query = new WP_Query( [
            'meta_query' => [ [ 
            'key' => '_stock_status',
            'value' => 'outofstock',
            'compare' => '=',
           ], ],
            'post_type' => 'product',
            'posts_per_page' => -1,
            'fields' => 'ids',
        ] );
           $exclude_ids = $oos_query->posts;
           $q->set( 'post__not_in', $exclude_ids );
      }
    }
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Das Thema „Leere Platzhalter bei ausverkauften Produkten“ ist für neue Antworten geschlossen.