In meinem WooCommerce Shop können Kunden nur ein Produkt kaufen. Sie können dieses einzelne Produkt mehrmals zum Einkaufswagen hinzufügen, aber mit unterschiedlichen benutzerdefinierten Metawerten. Kunden sind in der Lage, ihre Produkte aus dem Warenkorb (WooCommerce Standardfunktionalität) zu bearbeiten und die Meta ändern sie in ErstbefüllungWooCommerce erhalten Produkt benutzerdefinierte Meta aus Warenkorb
In meinem functions.php
Ich habe den folgenden Code:.
function add_names_on_tshirt_field() {
global $post;
$name_one_on_tshirt = "";
$name_two_on_tshirt = "";
$name_three_on_tshirt = "";
foreach (WC()->cart->cart_contents as $key => $value) {
if($value["product_id"] == $post->ID && isset($value["name_one_on_tshirt"])) {
$name_one_on_tshirt = $value["name_one_on_tshirt"];
}
if($value["product_id"] == $post->ID && isset($value["name_two_on_tshirt"])) {
$name_two_on_tshirt = $value["name_two_on_tshirt"];
}
if($value["product_id"] == $post->ID && isset($value["name_three_on_tshirt"])) {
$name_three_on_tshirt = $value["name_three_on_tshirt"];
}
}
echo '<table class="variations" cellspacing="0">
<tbody>
<tr>
<td class="label"><label for="color">Name 1 on T-Shirt</label></td>
<td class="value">
<input type="text" name="name-one-on-tshirt" value="'. esc_attr($name_one_on_tshirt) .'" />
</td>
</tr>
<tr>
<td class="label"><label for="color">Name 2 on T-Shirt</label></td>
<td class="value">
<input type="text" name="name-two-on-tshirt" value="'. esc_attr($name_two_on_tshirt) .'" />
</td>
</tr>
<tr>
<td class="label"><label for="color">Name 3 on T-Shirt</label></td>
<td class="value">
<input type="text" name="name-three-on-tshirt" value="'. esc_attr($name_three_on_tshirt) .'" />
</td>
</tr>
</tbody>
</table>';
}
add_action('woocommerce_before_add_to_cart_button', 'add_names_on_tshirt_field');
Das Problem darin liegt, wenn Meine Kunden versuchen ein Produkt aus dem Warenkorb zu bearbeiten. Da alle Produkte dieselbe ID haben (ich habe nur ein Produkt), wird das Meta vom letzten Produkt, das dem Warenkorb hinzugefügt wurde, in die Textfelder geladen. Ich erhalte derzeit die Meta in meinem foreach
mit der Produkt-ID, aber die ID ist die gleiche wie alle anderen Produkte in meinem Warenkorb. Gibt es eine andere Möglichkeit, die Meta ohne die product_id
/$post->ID
, wie die cart_item_key
abrufen oder Sitzungen verwenden abrufen? Hier