Addon - https://wordpress.org/plugins/woocommerce-product-dependencies/
Beschreibung:
EIn Plugin das Abhängigkeiten zu anderen Produkten hat.
bedeuet ein Benutzer muss ein Produkt im Warenkorb oder in der Vergangenheit gekauft haben, damit er den Artikel in den Warenkorb packen kann.
https://wordpress.org/plugins/woocommerce-product-dependencies/
Allerdings hat die version 2.0.1 einen Bug bei gekauften Produkten.
habe Ihn mit einem Workaround gefixt. Siehe weiter unten bei BUG
BUG:
Lösung:
Die Funktion
....
// Check ownership.
if ( in_array( $dependency_type, array( self::DEPENDENCY_TYPE_OWNERSHIP, self::DEPENDENCY_TYPE_EITHER ) ) ) {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
if ( 'category_ids' === $dependency_selection_type ) {
$tied_product_ids = $this->get_product_ids_in_categories( $tied_category_ids );
...
dies muss stehen belieben, die funktion ghet bis hier:
$result = $ownership_dependency_result || $purchase_dependency_result;
Ersetzen durch
// Check ownership (vereinfachte Prüfung).
if ( in_array( $dependency_type, array( self::DEPENDENCY_TYPE_OWNERSHIP, self::DEPENDENCY_TYPE_EITHER ) ) ) {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
// Hole ggf. Produkt-IDs aus Kategorie
if ( 'category_ids' === $dependency_selection_type ) {
$tied_product_ids = $this->get_product_ids_in_categories( $tied_category_ids );
} else {
$tied_product_ids = $tied_ids;
}
foreach ( $tied_product_ids as $tied_id ) {
if ( wc_customer_bought_product( '', $current_user->ID, $tied_id ) ) {
$ownership_dependency_result = true;
break;
}
}
// Kombinieren mit Kaufabhängigkeit falls nötig
if ( $ownership_dependency_result && self::DEPENDENCY_TYPE_EITHER === $dependency_type ) {
$purchase_dependency_result = true;
}
}
}
//hier endet die funktion und die datei geht normal weiter
Dann sieht das ganze so aus:
....
// Check ownership (vereinfachte Prüfung).
if ( in_array( $dependency_type, array( self::DEPENDENCY_TYPE_OWNERSHIP, self::DEPENDENCY_TYPE_EITHER ) ) ) {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
// Hole ggf. Produkt-IDs aus Kategorie
if ( 'category_ids' === $dependency_selection_type ) {
$tied_product_ids = $this->get_product_ids_in_categories( $tied_category_ids );
} else {
$tied_product_ids = $tied_ids;
}
foreach ( $tied_product_ids as $tied_id ) {
if ( wc_customer_bought_product( '', $current_user->ID, $tied_id ) ) {
$ownership_dependency_result = true;
break;
}
}
// Kombinieren mit Kaufabhängigkeit falls nötig
if ( $ownership_dependency_result && self::DEPENDENCY_TYPE_EITHER === $dependency_type ) {
$purchase_dependency_result = true;
}
}
}
//hier endet die funktion und die datei geht normal weiter
$result = $ownership_dependency_result || $purchase_dependency_result;
// Show notice.
if ( false === $result ) {
...
Hier einmal die woocommerce-product-dependencies.php zum download bzw
gleich die ganze Plugin Zip woocommerce-product-dependencies-2.0.1-original-ownership-logic-fix.zip