标签: hook-woocommerce

woocommerce 在前端按库存和缺货对产品进行排序

我想首先在产品类别中展示库存产品,或者如果可能的话,在任何地方展示库存产品,然后我也想在 Woocommerce 中展示缺货产品

实际上有很多产品没有数量但有库存,所以需要检查库存状态,但我更喜欢先有更多数量

在这种情况下,我怎样才能对当前的排序产生影响?非常感谢

sorting wordpress product woocommerce hook-woocommerce

4
推荐指数
1
解决办法
4465
查看次数

用于从管理员创建订单的 WooCommerce 挂钩

在我的自定义插件(在 WooCommerce 2.6.x 和 3.x 中工作)中,我需要在创建新订单时获取订单 ID。我尝试了不同的挂钩,但它们仅在客户创建订单时起作用,而不是在从管理员创建订单时起作用。

我试过:

  • woocommerce_new_order
  • woocommerce_thankyou
  • woocommerce_checkout_order_processed
  • woocommerce_checkout_update_order_meta

更新

最后我用了这个:

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)。

php woocommerce hook-woocommerce

4
推荐指数
1
解决办法
8950
查看次数

从WooCommerce的“客户”角色隐藏我的帐户中充值的帐户资金

我有一个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

4
推荐指数
1
解决办法
115
查看次数

获取产品变体父产品

如何获取变体父产品 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

wordpress wordpress-theming woocommerce hook-woocommerce

4
推荐指数
1
解决办法
2675
查看次数

从 WooCommerce 中的“添加到购物车”消息中删除双引号

我试图找出如何删除或替换 WooCommerce 添加到购物车消息中的双引号。

\n
\n

\xe2\x80\x9cUNF #10 x 1/4\xe2\x80\xb3\xe2\x80\x9d 已添加到您的购物车。

\n
\n

这是我的通知

\n

我正在处理一些英制尺寸,产品名称中表示英寸的“”周围的双引号看起来不整洁。

\n

我在消息显示的每个阶段都添加了过滤器

\n
    \n
  • 我的最后一次尝试如下所示
  • \n
  • 但我也尝试过
  • \n
\n

add_filter ( \'wc_add_to_cart_message_html\', \'wc_add_to_cart_message_html_filter\', 10, 2 );

\n

我尝试过查找字符串

\n
    \n
  • 为“\xe2\x80\x9c”
  • \n
  • 并转义“\\\xe2\x80\x9c”
  • \n
  • 并作为 Unicode
  • \n
\n

我可以替换消息的任何其他部分。

\n

但我无法删除或替换那些讨厌的引号。

\n\n
add_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}\n
Run Code Online (Sandbox Code Playgroud)\n\n

有什么帮助或线索吗?

\n

php wordpress product woocommerce hook-woocommerce

4
推荐指数
1
解决办法
316
查看次数

Woocommerce 审核订单总钩子回显结果两次

我想获取我在我的中使用以下代码的购物车总数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">&#36;</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">&#36;</span>18.00</bdi></span>' (length=128)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

php wordpress woocommerce hook-woocommerce woocommerce-theming

4
推荐指数
1
解决办法
974
查看次数

将“免费送货”方法设置为 WooCommerce 中选定的默认送货选项

我正在努力更改默认选择的运输选项。仅当客户购物车中的金额超过 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)

我在这里得到了这个片段的想法

在此输入图像描述

在此输入图像描述

先感谢您!!

php wordpress woocommerce hook-woocommerce shipping-method

4
推荐指数
1
解决办法
2455
查看次数

未捕获的 ArgumentCountError:函数 order_completed() 的参数太少。在 woocommerce_order_status_completed 挂钩上

我收到以下错误:

[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)

php wordpress orders woocommerce hook-woocommerce

4
推荐指数
1
解决办法
1800
查看次数

注册后如何将 WooCommerce 访客订单链接到客户帐户

我们的场景是:

访客用户无需注册即可进入网站并下一个或多个订单。一段时间后,他决定在该网站上注册。

现在注册后如何将客人订单链接到客户帐户?

我使用以下代码,但此代码仅适用于已经注册但购买时未登录的用户。有什么建议吗?

//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)

wordpress orders woocommerce hook-woocommerce

4
推荐指数
1
解决办法
2353
查看次数

使用 HPOS 过滤 WooCommerce 中的订单列表

我正在将开源插件转换为 HPOS 兼容。其功能之一是管理中订单列表上的附加过滤器(与订单状态一致),例如: 例子

我似乎无法实际执行查询的修改。pre_get_posts以前,当不再使用 WP_Post 时,我正在挂钩显然不再相关。

然后对于过滤器字段也是如此,我将其挂接到restrict_manage_posts. 找到了等效的钩子:woocommerce_order_list_table_restrict_manage_orders

有人知道要使用哪个钩子吗?

php wordpress orders woocommerce hook-woocommerce

4
推荐指数
2
解决办法
900
查看次数