我正在为我的一个电子商务Wordpress网站使用WooCommerce插件.我想在woocommerce管理区域的我的订单列表页面添加一些列.我无法找到添加它的位置.
任何人都可以建议我需要修改哪个模板页面以满足我的要求吗?
需要为订单商品添加自定义元.谷歌搜索它,大多数文章说使用"woocommerce_add_order_item_meta"钩子.此挂钩在最新版本2.3.7中已弃用.有人,请告诉我使用哪个钩子.
http://docs.woothemes.com/wc-apidocs/function-woocommerce_add_order_item_meta.html
我目前正在向我的WooCommerce产品页面成功添加一个字段,该字段显示了以下值:
问题:它没有在管理订单"自定义字段"Metabox中显示为自定义字段,其中包含值,但仅作为订单页面中的文本.
这是我的工作代码:
// Add the field to the product
add_action('woocommerce_before_add_to_cart_button', 'my_custom_checkout_field');
function my_custom_checkout_field() {
echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
echo '<label>fill in this field</label> <input type="text" name="my_field_name">';
echo '</div>';
}
// Store custom field
function save_my_custom_checkout_field( $cart_item_data, $product_id ) {
if( isset( $_REQUEST['my_field_name'] ) ) {
$cart_item_data[ 'my_field_name' ] = $_REQUEST['my_field_name'];
/* below statement make sure every add to cart action as unique line item */
$cart_item_data['unique_key'] = md5( microtime().rand() );
}
return $cart_item_data;
}
add_action( …Run Code Online (Sandbox Code Playgroud) 在WooCommerce中,我想在客户成功签出后向API发送请求.它基本上是一个网站,客户在那里销售在线课程(像udemy).
当客户退房时,我想发送API请求并为该特定课程注册用户.我尝试了几个WooCommerce钩子,但没有一个对我有效.
这是我正在使用的代码:
add_action('woocommerce_checkout_order_processed', 'enroll_student', 10, 1);
function enroll_student($order_id)
{
echo $order_id;
echo "Hooked";
}
Run Code Online (Sandbox Code Playgroud)
我在激活的插件中编写此代码,为了方便起见,我目前正在使用Cash on Delivery方法.
任何人都可以指出我出错的地方,因为当我结账时,我无法看到消息"挂钩"我正在打印也不是$order_id?
我带我到成功页面,并没有显示我正在打印的这两件事.
在我的自定义插件中,我需要捕获每次订单状态从 变为 的情况,wc_on_hold因此wc_completed我尝试写下:
function so_status_completed( $order_id, $old_status, $new_status ) {
// if user is active , then get order amount and do all other personal calculations
global $wpdb;
$order = wc_get_order( $order_id );
//$payment_method = $order->get_payment_method(); //returns payment method bacs,cheque,cod etc
$user_id = $order->get_user_id();
$total = $order->get_total();
$order_data = $order->get_data();
//$order_total = $order->get_formatted_order_total();
$order_total = $order->get_total();
echo '<script>console.log("Debug Objects: Check order_total ' . $order_total. '");</script>';
}
add_action('woocommerce_order_payment_status_changed','so_status_completed',10,1);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将订单测试从暂停更改为完成时,我无法在 Chrome 控制台上回显给我订单价格......也许使用 add_action 不是将侦听器置于该事件的正确方法?
另外,由于我就在这里,我正在使用 $order-get_total() ,我在网上搜索了它的功能,但没有找到深入的文档,所以我想问你该方法是否是免费检索订单金额的正确方法应用?
谢谢!干杯!!!
wordpress orders woocommerce hook-woocommerce woocommerce-theming
我正在努力获取Magento中status ='complete'的订单的订单ID和其他详细信息.我确信在magento中有一种方法可以检索状态为Complete的所有订单.由于我是magento的新人,我发现很难解决这个问题.
我希望向客户发送订单状态为完成电子邮件,并在发送电子邮件后标记.但这就是它的后半部分.任何人都可以告诉我如何在magento中获得状态为Complete的所有订单ID?
任何帮助表示赞赏.提前致谢.
我需要在收到付款后自动更改已完成的订单状态,但前提是订单状态为"正在处理".我找到了片段,在每种情况下都会使订单状态完成,但是在成功付款更改后我的付款插件会返回数据并更改"处理"的订单状态.我想在成功后将其更改为"已完成",如果状态不是"处理",则不要更改它.我遇到的主要问题是我不知道如何获得收到的状态订单.
这是我的代码:
add_filter( 'woocommerce_thankyou', 'update_order_status', 10, 2 );
function update_order_status( $order_id ) {
$order = new WC_Order( $order_id );
$order_status = $order->get_status();
if ('processing' == $order_status) {
$order->update_status( 'completed' );
}
//return $order_status;
}
Run Code Online (Sandbox Code Playgroud)
我已经弄清楚了.这是工作代码:
add_filter( 'woocommerce_thankyou', 'update_order_status', 10, 1 );
function update_order_status( $order_id ) {
if ( !$order_id ){
return;
}
$order = new WC_Order( $order_id );
if ( 'processing' == $order->status) {
$order->update_status( 'completed' );
}
return;
}
Run Code Online (Sandbox Code Playgroud) 在运行WooCommerce的WordPress网站中,用户可以登录他的(默认)个人区域并显示以下信息:
在orders选项卡中,默认情况下会显示一个表格,显示所有订单的列表,并带有一个View按钮,该按钮可重定向到该订单的完整详细信息页面.
我想要做的是在模态窗口中显示该表视图.
我在显示加载了目标url的模态时没有任何问题.真正的问题是,目标网址是完整页面的网址,它显示在一个<iframe>,而不是我想要的.
我认为有一些短代码允许加载该表,或者可能是一些woocommerce功能load_order_content_by_id($id)?
任何人都能指出我正确的方向吗?
谢谢
===解决===
感谢Raunak Gupta为我指出了正确的功能.我重写了orders.php模板,添加了Modal窗口html并进行了编辑$actions:
'view' => array(
'url' => 'javascript:;',
'data' => [
'order-number' => $order->get_order_number()
],
'name' => __( 'View', 'woocommerce' )
),
Run Code Online (Sandbox Code Playgroud)
并在同一档案上:
foreach ( $actions as $key => $action ) {
echo '<a href="' . esc_url( $action['url'] ) . '" class="button ' . sanitize_html_class( $key ) . '"';
if(isset($action['data']) && is_array($action['data'])){
foreach($action['data'] AS $data_attr=>$data_value){
echo 'data-' …Run Code Online (Sandbox Code Playgroud) 我正在使用WooCommerce在WordPress中开发一个网站.我正在使用WC付费列表和WooCommerce订阅插件来处理我的工作.
问题是当具有"订阅者"角色的用户具有活动订阅登录并且每次他/她必须选择包时尝试发布内容,即使他具有活动订阅.
是否有人知道如何检测用户是否有活动订阅,如果它返回true则跳过选择包的步骤?
谢谢.
如何获得产品woocommerce的元数据?我有我的产品现场定制,我需要获取这些数据.
{"ID":151,
"ORDER_ID":251,
"NAME":"car",
"PRODUCT_ID":87,
"VARIATION_ID":0,
"QUANTITY":1,
"TAX_CLASS":"",
"SUBTOTAL":"3",
"SUBTOTAL_TAX":"0",
"TOTAL":"3",
"TOTAL_TAX":"0",
"TAXES":{"TOTAL":[],
"SUBTOTAL":[]},
"META_DATA":[{"ID":1433,
"KEY":"my_car",
"VALUE":"red"}]}
Run Code Online (Sandbox Code Playgroud)
但总是结果是一样的,我无法进入现场meta_data.该领域ID和name我有权访问.
我用get_data()和get_item(),但是当我尝试访问get_data()到外地 meta_data它给我这个错误:
UNCAUGHT ERROR: CANNOT USE OBJECT OF TYPE WC_DATETIME AS ARRAY IN
Run Code Online (Sandbox Code Playgroud)
并且get_item(),meta_data由于受到保护,该值为null.
我怎样才能获得这些价值?
orders ×10
php ×9
woocommerce ×9
wordpress ×9
backend ×1
checkout ×1
magento ×1
metadata ×1
modal-dialog ×1