Php 显示包含添加到购物车的第一个产品的类别链接的自定义消息

Php 显示包含添加到购物车的第一个产品的类别链接的自定义消息,php,wordpress,woocommerce,categories,cart,Php,Wordpress,Woocommerce,Categories,Cart,在WooCommerce上,我想在购物车页面顶部显示一条自定义消息,其中包含添加到购物车的第一个产品的类别链接 这是一条信息: 从{链接到购物车中添加的第一个产品类别}添加更多T恤,并获得折扣 我怎样才能做到这一点?有什么想法吗 谢谢这里有一个自定义功能,它将在购物车页面上显示您的自定义消息,并为第一个添加到购物车的产品提供“类别存档页面”链接 如果将没有类别的产品添加到购物车,则不会显示任何内容 您还可以选择在签出页面上显示它(取消最后一行的注释) 以下是代码: function cart_c

在WooCommerce上,我想在购物车页面顶部显示一条自定义消息,其中包含添加到购物车的第一个产品的类别链接

这是一条信息:

{链接到购物车中添加的第一个产品类别}
添加更多T恤,并获得折扣

我怎样才能做到这一点?有什么想法吗


谢谢

这里有一个自定义功能,它将在购物车页面上显示您的自定义消息,并为第一个添加到购物车的产品提供“类别存档页面”链接
如果将没有类别的产品添加到购物车,则不会显示任何内容
您还可以选择在签出页面上显示它(取消最后一行的注释)

以下是代码:

function cart_custom_message() {
    if( !WC()->cart->is_empty ){

        //Iterating each item in the cart
        foreach ( WC()->cart->get_cart() as $item ) {

            // Get the product categories object of the current item
            $categories_obj = get_the_terms( $item['product_id'], 'product_cat' );
            if($categories_obj) break; // when an item has a product category, stops the loop
        }
        if($categories_obj) {
            //Iterating each category of the first item
            foreach ( $categories_obj as $category ) {
                break; // stop the loop to on the first category
            }
            $category_id = $category->term_id; // the category id
            $category_name = $category->name; // the category name
            $category_slug = $category->slug; // the category slug
            $category_url = get_term_link( $category_slug, 'product_cat' ); // the link to category archive pages

            // Your message (translatable)
            $message = __("Add more T-shirts from <a href='$category_url'><strong>$category_name</strong></a> category and get a discount!", "your_theme_domain");
            echo "<div class='woocommerce-info'>$message</div>";
        }
    }
}
// Display message on cart page
add_action('woocommerce_before_cart', 'cart_custom_message'); 
// Display message on checkout page (optionally, if needed, uncomment the line below) 
// add_action('woocommerce_before_checkout_form', 'cart_custom_message', 5); 
功能车\自定义\消息(){
如果(!WC()->购物车->为空){
//迭代购物车中的每个项目
foreach(WC()->cart->get_cart()作为$item){
//获取当前项目的产品类别对象
$categories_obj=获取_术语($item['product_id','product_cat');
如果($categories_obj)break;//当项目有产品类别时,停止循环
}
如果($U obj){
//迭代第一项的每个类别
foreach($categories\u obj作为$categories){
break;//在第一个类别上停止到的循环
}
$category\u id=$category->term\u id;//类别id
$category\u name=$category->name;//类别名称
$category\u slug=$category->slug;//类别slug
$category_url=get_term_link($category_slug,'product_cat');//指向类别存档页面的链接
//你的信息(可翻译)
$message=uuuu(“从类别中添加更多T恤并获得折扣!”,“您的主题域”);
回显“$message”;
}
}
}
//在购物车页面上显示消息
添加操作(“购物车前的woocommerce”、“购物车自定义消息”);
//在签出页面上显示消息(如果需要,也可以取消对下面行的注释)
//添加操作(“签出表单前的woocommerce”和“购物车自定义消息”,5);
代码位于活动子主题(或主题)的function.php文件或任何插件文件中

这段代码经过测试,功能齐全


参考资料:


我真不敢相信这会有多好!!非常感谢你!为什么需要“你的主题域”最后一个问题!!如何在购物车内容表的正下方复制相同的消息?正好在购物车抵押品框之前