我想首先在产品类别中展示库存产品,或者如果可能的话,在任何地方展示库存产品,然后我也想在 Woocommerce 中展示缺货产品
实际上有很多产品没有数量但有库存,所以需要检查库存状态,但我更喜欢先有更多数量
在这种情况下,我怎样才能对当前的排序产生影响?非常感谢
在我的自定义插件(在 WooCommerce 2.6.x 和 3.x 中工作)中,我需要在创建新订单时获取订单 ID。我尝试了不同的挂钩,但它们仅在客户创建订单时起作用,而不是在从管理员创建订单时起作用。
我试过:
更新
最后我用了这个:
add_action('wp_insert_post', function($order_id)
{
if(!did_action('woocommerce_checkout_order_processed')
&& get_post_type($order_id) == 'shop_order'
&& validate_order($order_id))
{
order_action($order_id);
}
});
Run Code Online (Sandbox Code Playgroud)
其中validate_order是:
function validate_order($order_id)
{
$order = new \WC_Order($order_id);
$user_meta = get_user_meta($order->get_user_id());
if($user_meta)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
感谢validate_order,当您开始创建订单时,该操作不会执行。我使用它是!did_action('woocommerce_checkout_order_processed')因为我不希望在客户创建订单时执行该操作(我为此有一个特定操作,使用woocommerce_checkout_order_processed)。
我有一个Woocommerce订阅网站,所以我的大多数客户角色是Subscriber。现在,我想向潜在客户提供一些免费的迷你试用版,并给予他们一些荣誉,Customer因为我们尚未吸引到潜在客户注册订阅。
问题是帐户资金(插件:WooCommerce的WooCommerce帐户资金)显示在其“我的帐户”区域中,允许他们在需要时存入10美元并绕开订阅。我该如何通过Woocommerce挂钩将其隐藏起来?
以下是与“已付款帐户资金”插件的“我的帐户”相关的源代码,摘自 /includes/class-wc-account-funds-my-account.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* WC_Account_Funds_My_Account
*/
class WC_Account_Funds_My_Account extends WC_Query {
/**
* Constructor
*/
public function __construct() {
add_action( 'init', array( $this, 'add_endpoints' ) );
add_filter( 'the_title', array( $this, 'change_endpoint_title' ), 11, 1 );
if ( ! is_admin() ) {
add_filter( 'query_vars', array( $this, 'add_query_vars' ), 0 );
add_filter( 'woocommerce_get_breadcrumb', array( $this, 'add_breadcrumb' ), 10 );
add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ), …Run Code Online (Sandbox Code Playgroud) php wordpress woocommerce hook-woocommerce woocommerce-subscriptions
如何获取变体父产品 ID。
示例:我的产品 ID 为 35,该产品有两种颜色 - 红色 (ID 351)、黑色 (ID 352)
我的代码:
$product = wc_get_product(get_the_ID()); //get_the_ID() is ID 351 and I need this parent ID 35
我试图找出如何删除或替换 WooCommerce 添加到购物车消息中的双引号。
\n\n\n\n\xe2\x80\x9cUNF #10 x 1/4\xe2\x80\xb3\xe2\x80\x9d 已添加到您的购物车。
\n
我正在处理一些英制尺寸,产品名称中表示英寸的“”周围的双引号看起来不整洁。
\n我在消息显示的每个阶段都添加了过滤器
\n add_filter ( \'wc_add_to_cart_message_html\', \'wc_add_to_cart_message_html_filter\', 10, 2 );
我尝试过查找字符串
\n我可以替换消息的任何其他部分。
\n但我无法删除或替换那些讨厌的引号。
\n\nadd_filter ( \'woocommerce_add_success\', \'woocommerce_add_success_filter\', 10, 1 );\nfunction woocommerce_add_success_filter ( $message ) {\n\n $message = str_replace("basket","CART", $message);\n $message = str_replace("\\\xe2\x80\x9c","[ ", $message);\n\n return $message;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n有什么帮助或线索吗?
\n我想获取我在我的中使用以下代码的购物车总数functions.php:
function display_total(){
global $woocommerce;
$newTotal = $woocommerce->cart->get_total();
echo $newTotal;
};
add_action( 'woocommerce_review_order_before_order_total', 'display_total');
Run Code Online (Sandbox Code Playgroud)
它不是显示一次金额,而是像 那样显示两次$18.00$18.00。
执行 a 操作var_dump也会生成 2 行 HTML:
D:\Wordpress\wp-content\themes\new_theme\functions.php:161:string '<span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>18.00</bdi></span>' (length=128)
D:\Wordpress\wp-content\themes\new_theme\functions.php:161:string '<span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>18.00</bdi></span>' (length=128)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
php wordpress woocommerce hook-woocommerce woocommerce-theming
我正在努力更改默认选择的运输选项。仅当客户购物车中的金额超过 70 美元以上时,才会显示“免费送货”送货选项。如果购物车中的金额低于 70 美元,运输选项将不会显示在运输选项中。
如果客户的金额超过 70 美元或以上,则会显示“免费送货”选项,并且它应该是默认选择的送货选项。
我尝试添加以下代码片段,但它似乎对我不起作用,或者修改 ID 时可能出现错误(不确定)。
add_action( 'woocommerce_before_cart', 'set_default_chosen_shipping_method', 5 );
function set_default_chosen_shipping_method(){
//
if( count( WC()->session->get('shipping_method_0')['rates'] ) > 0 ){
foreach( WC()->session->get('shipping_method_0')['rates'] as $rate_id =>$rate)
if($rate->method_id == 'free_shipping30'){
$default_rate_id = array( $rate_id );
break;
}
WC()->session->set('chosen_shipping_methods', $default_rate_id );
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里得到了这个片段的想法
先感谢您!!
我收到以下错误:
[2021 年 11 月 30 日 16:08:47 UTC] PHP 致命错误:未捕获的 ArgumentCountError:函数 order_completed() 的参数太少,1 个传入 /home/brantsho/public_html/wp-includes/class-wp-hook.php在第 305 行和 /home/brantsho/public_html/wp-content/themes/glowing/functions.php:28 中预期的第 4 行堆栈跟踪:#0 /home/brantsho/public_html/wp-includes/class-wp-hook。 php(305): order_completed() #1 /home/brantsho/public_html/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #2 /home/brantsho/public_html/wp-includes /plugin.php(470): WP_Hook->do_action() #3 /home/brantsho/public_html/wp-content/plugins/woocommerce/includes/class-wc-order.php(364): do_action() #4 / home/brantsho/public_html/wp-content/plugins/woocommerce/includes/class-wc-order.php(222): WC_Order->status_transition() #5 /home/brantsho/public_html/wp-content/plugins/woocommerce/包括/class-wc-order.php(334): WC_Order->save() #6 /home/brantsho/public_html/wp-content/plugins/woocommerce/includes/class-wc-ajax.php(530): WC_Order ->update_status() #7 /home/brantsho/public_html/wp-incl 在 /home/brantsho/public_html/wp-content/themes/glowing/functions.php 第 28 行
但我的functions.php 看起来不错:
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
define('GLOWING_VERSION', '1.0.0');
define('GLOWING_FILE_HANDLER', basename(get_template_directory()) . '-');
/**
* Inlcude …Run Code Online (Sandbox Code Playgroud) 我们的场景是:
访客用户无需注册即可进入网站并下一个或多个订单。一段时间后,他决定在该网站上注册。
现在注册后如何将客人订单链接到客户帐户?
我使用以下代码,但此代码仅适用于已经注册但购买时未登录的用户。有什么建议吗?
//assign user in guest order
add_action( 'woocommerce_new_order', 'action_woocommerce_new_order', 10, 1 );
function action_woocommerce_new_order( $order_id ) {
$order = new WC_Order($order_id);
$user = $order->get_user();
if( !$user ){
//guest order
$userdata = get_user_by( 'email', $order->get_billing_email() );
if(isset( $userdata->ID )){
//registered
update_post_meta($order_id, '_customer_user', $userdata->ID );
}else{
//Guest
}
}
}
Run Code Online (Sandbox Code Playgroud)