WooCommerce에서 PHP를 사용하여 ID로 제품 삭제
명령어가 있기 때문에:
wp_insert_post()
명령어가 있어야 하지 않을까요?
wp_delete_post()
존재하지 않는 것 같습니다만, 제품의 ID를 데이터베이스에 가지고 있고 삭제하고 싶을 때 사용하는 대체 방법은 무엇입니까?
WooCommerce는 API를 통해 제품을 삭제하는 방법이 있기 때문에 그 기능에서 제품을 쉽게 삭제할 수 있는 방법을 구축했습니다.
/**
* 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;
}
코드가 들어갑니다.functions.php
활성 하위 테마(또는 테마)의 파일입니다.또는 플러그인 php 파일에도 있습니다.
사용.
wh_deleteProduct(170); //to trash a product
wh_deleteProduct(170, TRUE); //to permanently delete a product
코드가 테스트되어 동작한다.
이게 도움이 됐으면 좋겠네요!
워드프레스의 모든 것이 포스트이기 때문에 제품도 포스트이고 워드프레스 Codex에 따르면 이 주문은 존재하기 때문에 당신은 포스트 ID를 전달 할 수 있습니다.
wp_delete_post((int)ID) as integer value
WordPress에서는 제품이 포스트이기도 하고 포스트 광고 post_meta 테이블에도 저장되므로 다음 코드를 사용할 수 있습니다.
$product_id = 108;
wp_delete_post( $product_id );
WC API PHP 라이브러리 https://github.com/woocommerce/wc-api-php 를 사용할 수 있습니다.
세우다
먼저 Woocommerce > settings > API에서 새로운 키를 추가합니다.https://docs.woocommerce.com/document/woocommerce-rest-api/
WP REST API 통합 추가
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/Client.php');
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/HttpClient/BasicAuth.php');
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/HttpClient/HttpClient.php');
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/HttpClient/HttpClientException.php');
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/HttpClient/OAuth.php');
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/HttpClient/Options.php');
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/HttpClient/Request.php');
require_once( __DIR__ . '/wc-api-php-master/src/WooCommerce/HttpClient/Response.php');
use Automattic\WooCommerce\Client;
use Automattic\WooCommerce\HttpClient\HttpClientException;
$woocommerce = new Client(
home_url(),
'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', //Consumer Key
'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', //Consumer Secret
[
'wp_api' => true,
'version' => 'wc/v2',
]
);
제품 삭제
그리고 이 줄을 사용하여 제품을 삭제합니다.
<?php
$PRODUCT_ID = 40;
print_r($woocommerce->delete('products/'.$PRODUCT_ID, ['force' => true]));
?>
또한 배치 업데이트 제품을 사용하여 제품을 삭제할 수도 있습니다.
설명서를 읽어야 합니다. https://woocommerce.github.io/woocommerce-rest-api-docs
WooCommerce WC_Product API에는 삭제 방식이 구현되어 있습니다.이것이 가장 안전한 방법일 것입니다.
https://woocommerce.github.io/code-reference/classes/WC-Product.html#method_delete
public function delete_products() {
$products = wc_get_products(Array(
'limit' => 9999
));
foreach($products as $product) {
$product->delete();
}
}
언급URL : https://stackoverflow.com/questions/46874020/delete-a-product-by-id-using-php-in-woocommerce
'programing' 카테고리의 다른 글
Apache 2.4에서 mod_rewrite를 활성화하는 방법 (0) | 2023.03.22 |
---|---|
Wordpress에서 하나의 Contact Form 7 폼에서 다른 폼으로 값을 전달하려면 어떻게 해야 합니까? (0) | 2023.03.22 |
어레이 맵을 사용하여 조건부로 결과 필터링 (0) | 2023.03.22 |
Spring Boot에서 @WebMvcTest의 Spring Security 설정 클래스를 비활성화합니다. (0) | 2023.03.22 |
관계형 데이터베이스에 비해 MongoDB와 같은 스키마가 없는 데이터베이스를 사용하는 장점은 무엇입니까? (0) | 2023.03.22 |