我在wordpress&中使用woocommerce插件并将其放在/home/builhsqv/public_html/test/wp-contents/plugins/
位置。现在我在/home/builhsqv/public_html/test/test.php
创建了一个php文件。在此文件中,我编写了代码以删除单个订单行项目。
<strong>
//TEST.PHP
<?php
error_reporting(E_ALL );
require_once( dirname(__FILE__)."/wp-content/plugins/woocommerce/includes/wc-order-functions.php");
echo "Woocommerce";
$itemID = 1234;
echo $result = wc_delete_order_item($itemID);
print_r($result); die;
?>
//wc-order-functions.php (File of woocommerce with function body)
<?php
function wc_delete_order_item( $item_id ) {
global $wpdb;
$item_id = absint( $item_id );
if ( ! $item_id )
return false;
do_action( 'woocommerce_before_delete_order_item', $item_id );
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d", $item_id ) );
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE order_item_id = %d", $item_id ) );
do_action( 'woocommerce_delete_order_item', $item_id );
return true;
}
?>
</strong>
当我在浏览器中运行此文件时,它显示一个空白页面。 但是当我评论require路径和调用函数时,我可以看到echo消息。
我想使用woocommerce中的PHP脚本删除订单行项目。
答案 0 :(得分:0)
您可能会在WooCommerce中找到此文件,需要插件中的其他人和WordPress本身删除订单项。
虽然我不确定为什么要使用1个订单的1个订单项的脚本来做这个,这可以通过CMS或数据库完成,但要使用WooCommerce帮助函数复制index.php,并更改{{1 }} WP_USE_THEMES
就像这样。
false
只要您存储在WordPress安装的根目录中,这将实现您的目标。
我偶然发现了这个想要删除所有与订单ID相关的项目而没有直接查询数据库,这在挖掘了WooCommerce代码之后为其他人寻找相同的结果
<?php
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/
/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/
define('WP_USE_THEMES', false);
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
/** Delete order line item 1234 */
$itemID = 1234;
$result = wc_delete_order_item($itemID);
echo "<pre>";
print_r($result);
echo "</pre>";
答案 1 :(得分:-1)
首先需要知道您的订单行ID。
我得到这样的话:
$ sql =&#39;选择&#39;
。 &#39; woi.order_item_name,woim.meta_value,woim.order_item_id&#39;
。 &#39;来自wp_woocommerce_order_items woi加入wp_woocommerce_order_itemmeta woim&#39;
。 &#39;其中order_id =&#39; 。 $ order_id
。 &#39;和woi.order_item_id = woim.order_item_id和woim。public static int CustomRound(double value)
{
int sign = Math.Sign(value);
double absValue = Math.Abs(value);
int absResult = (int)Math.Round(absValue - 0.01, 0, MidpointRounding.AwayFromZero);
return absResult * sign;
}
= \&#39; _product_id \&#39;&#39;
。 &#39; group by woi.order_item_name order by 3&#39;;
我将它们加载到表格中。当我想删除行时,我使用这个函数:
function order_delete_lines($ lines)
{
foreach($ line as $ line)
wc_delete_order_item($线);
}
雅各布