Löschen Sie ein Produkt nach ID mit PHP in WooCommerce
Lesezeit: 3 Minuten
dimitrisr
Da es einen Befehl gibt:
wp_insert_post()
sollte da nicht ein befehl stehen:
wp_delete_post()
Scheint nicht zu existieren, was ist eine Alternative, die Sie verwenden, wenn Sie die ID eines Produkts in der Datenbank haben und es löschen möchten?
Es ist eine globale Variable, um sie zu verwenden, deklarieren Sie einfach “global $woocommerce;”
– Andreas Schultz
22. Oktober 2017 um 22:00 Uhr
WooCommerce hat eine Methode dazu Löschen Sie ein Produkt über die APIalso habe ich aus dieser Funktion eine Methode erstellt, die ein Produkt einfach löschen kann.
/**
* Method to delete Woo Product
*
* @param int $id the product ID.
* @param bool $force true to permanently delete product, false to move to trash.
* @return \WP_Error|boolean
*/
function wh_deleteProduct($id, $force = FALSE)
{
$product = wc_get_product($id);
if(empty($product))
return new WP_Error(999, sprintf(__('No %s is associated with #%d', 'woocommerce'), 'product', $id));
// If we're forcing, then delete permanently.
if ($force)
{
if ($product->is_type('variable'))
{
foreach ($product->get_children() as $child_id)
{
$child = wc_get_product($child_id);
$child->delete(true);
}
}
elseif ($product->is_type('grouped'))
{
foreach ($product->get_children() as $child_id)
{
$child = wc_get_product($child_id);
$child->set_parent_id(0);
$child->save();
}
}
$product->delete(true);
$result = $product->get_id() > 0 ? false : true;
}
else
{
$product->delete();
$result="trash" === $product->get_status();
}
if (!$result)
{
return new WP_Error(999, sprintf(__('This %s cannot be deleted', 'woocommerce'), 'product'));
}
// Delete parent product transients.
if ($parent_id = wp_get_post_parent_id($id))
{
wc_delete_product_transients($parent_id);
}
return true;
}
Code geht rein functions.php Datei deines aktiven Child-Themes (oder Themes). Oder auch in irgendwelchen Plugin-PHP-Dateien.
VERWENDUNGSZWECK
wh_deleteProduct(170); //to trash a product
wh_deleteProduct(170, TRUE); //to permanently delete a product
Code ist getestet und funktioniert.
Hoffe das hilft!
Abdallah Awwad Alkhwaldah
Weil alles in WordPress Post ist, ist das Produkt auch ein Post und entsprechend WordPress-Codex Diese Bestellung ist vorhanden, Sie können die Post-ID an die übergeben
wp_delete_post((int)ID) as integer value
In WordPress ist das Produkt auch der Post und wird auch in der Tabelle post ad post_meta gespeichert, sodass Sie dafür den folgenden Code verwenden können.
Sind Sie sicher, dass die ID richtig ist?
– Mo’men Mohamed
22. Oktober 2017 um 12:31 Uhr
Sie können Produkte über die WC-API löschen woocommerce.github.io/woocommerce-rest-api-docs/…
– Andreas Schultz
22. Oktober 2017 um 12:32 Uhr
@AndrewSchultz was ist diese $woocommerce-Variable, die verwendet wird? Wie initiiere ich es?
– dimitrisr
22. Oktober 2017 um 12:45 Uhr
codex.wordpress.org/Function_Reference/wp_delete_post
– Reigel Gallarde
22. Oktober 2017 um 13:47 Uhr
Es ist eine globale Variable, um sie zu verwenden, deklarieren Sie einfach “global $woocommerce;”
– Andreas Schultz
22. Oktober 2017 um 22:00 Uhr