标签: hook-woocommerce

在单一和可变产品的“附加信息区域”上显示 SKU

我正在尝试在单个产品“附加信息”选项卡的表行中显示产品的 SKU。

我尝试使用woocommerce_display_product_attributes过滤器并显示它(下面是我的代码示例),但它仅适用于简单的产品

当使用具有不同 SKU 的可变产品时,选择(下拉选择)变体时,该字段不会更新,并且仅显示空白。有没有正确的方法来做到这一点?

这是我当前的代码:

// Displays SKU/Part# to Single product Additional information table rows
add_filter('woocommerce_display_product_attributes', 'wc_display_sku_additional_info_table', 10, 2);
function wc_display_sku_additional_info_table( $product_attributes, $product ){
    // Get product SKU
    $get_sku = ( $sku = $product->get_sku() ) ? $sku : esc_html__( 'N/A', 'woocommerce' );

    $product_attributes[] = [
        'label' => __('SKU', 'woocommerce'),
        'value' => $get_sku,
    ];
    return $product_attributes;
}
Run Code Online (Sandbox Code Playgroud)

php wordpress jquery woocommerce hook-woocommerce

3
推荐指数
1
解决办法
2402
查看次数

WooCommerce:添加自定义元作为隐藏订单项元以供内部使用

我想向 WooCommerce 中的订单项目添加一些元数据。这些元字段仅供内部使用,不应可见。

我们的产品中有一些额外的字段,例如额外费用。我想在导出订单后使用该费用进行处理。

我在这里找到了一个非常好的答案:https ://stackoverflow.com/a/41988701/1788961

add_action('woocommerce_checkout_create_order_line_item', 'add_custom_hiden_order_item_meta_data', 20, 4 );
function add_custom_hiden_order_item_meta_data( $item, $cart_item_key, $values, $order ) {

    // Set user meta custom field as order item meta
    if( $meta_value = get_user_meta( $order->get_user_id(), 'billing_enumber', true ) )
        $item->update_meta_data( 'pa_billing-e-number', $meta_value );
}
Run Code Online (Sandbox Code Playgroud)

但在此示例中,元字段中的内容将显示在客户的订单详细信息中。

有没有办法使这些字段仅在后端可见并可用于内部功能?

php wordpress orders woocommerce hook-woocommerce

3
推荐指数
1
解决办法
4532
查看次数

如何将类添加到 WooCommerce 单一产品页面

我正在尝试将类添加到 WooCommerce 单一产品页面,特别是产品页面上的“产品”div,但也添加其他元素 - 使用挂钩和过滤器。

我不太擅长 PHP,我更像是一名前端开发人员,但我的任务是设计 WooCommerce 样式以适应自定义 Wordpress 主题。

我之前使用过以下代码通过文件将类添加到 Wordpress 中的 body 元素functions.php。我在 WooCommerce 模板的产品页面上找到了“产品”div,并为此复制了过滤器,但它似乎不起作用。

add_filter( 'wc_product_class','my_product_class' );
function my_product_class( $classes ) {
    $classes[] = 'my-product-class';         
    return $classes; 
}
Run Code Online (Sandbox Code Playgroud)

任何帮助或指示我应该做什么来实现这一目标将非常感激。我现在用 JS 添加类,但这可能不是一个好主意!

css wordpress product woocommerce hook-woocommerce

3
推荐指数
1
解决办法
5576
查看次数

如何检查 WooCommerce 插件是否已启用?

我正在尝试检查 WooCommerce 插件是否处于活动状态,然后向选项面板添加一些选项。但这段代码不能正常工作。

谁能告诉我出了什么问题吗?

 if( class_exists( 'WooCommerce' )) {//add options}
Run Code Online (Sandbox Code Playgroud)

php wordpress plugins woocommerce hook-woocommerce

3
推荐指数
1
解决办法
3765
查看次数

在 WooCommerce 管理订单列表上添加付款方式的过滤器下拉列表

阅读https://rudrastyh.com/woocommerce/columns.html后,我能够在 WooCommerce 管理订单列表上添加包含订单付款方式的列

add_filter('manage_edit-shop_order_columns', 'misha_order_items_column' );
function misha_order_items_column( $order_columns ) {
    $order_columns['order_payment_method'] = "Payment method";
    return $order_columns;
}

add_action( 'manage_shop_order_posts_custom_column' , 'misha_order_items_column_cnt' );
function misha_order_items_column_cnt( $colname ) {
    global $the_order; // the global order object

     if( $colname == 'order_payment_method' ) {

        // Get payment method
        $payment_method = $the_order->get_payment_method();

        echo $payment_method;
    }  
}
Run Code Online (Sandbox Code Playgroud)

这非常有效,并在自定义列中添加所需的状态


然后,根据我找到的代码,我进行了调整以添加过滤器

add_action('restrict_manage_posts', 'add_shop_order_filter_by_state');
function add_shop_order_filter_by_state(){
    global $pagenow, $typenow, $the_order;

    if( 'shop_order' === $typenow && 'edit.php' === $pagenow ) {
        // Get payment method
        $payment_method = …
Run Code Online (Sandbox Code Playgroud)

wordpress backend woocommerce payment-method hook-woocommerce

3
推荐指数
1
解决办法
1252
查看次数

WooCommerce 在发布产品时触发操作并创建日志文件

在 WooCommerce 中,我\xe2\x80\x99m 尝试在发布产品时触发操作,但它\xe2\x80\x99t 不起作用,这是我的代码:

\n
add_action( 'transition_post_status', 'my_call_back_function', 10, 3 ); \nfunction my_call_back_function( $new_status, $old_status, $post ) {\n    if (\n      'product' !== $post->post_type ||\n      'publish' !== $new_status ||\n      'publish' === $old_status\n   ) {\n      return;\n   }\n   file_put_contents( 'file.txt', 'Product published', FILE_APPEND ); \n}\n
Run Code Online (Sandbox Code Playgroud)\n

这里我\xe2\x80\x99m 尝试创建一个文件并在其中放入一些文本。但正如我所说,该文件并未创建\xe2\x80\x99。

\n

I\xe2\x80\x99m 使用 WordPress 5.8.1 和 Woocommerce 5.8.0。问题是什么以及如何解决?我们将非常感谢您的帮助。

\n

提前致谢。

\n

php wordpress fopen woocommerce hook-woocommerce

3
推荐指数
1
解决办法
159
查看次数

WooCommerce 自定义订单操作不适用于垃圾状态

我想使用 woocommerce 挂钩woocommerce_order_status_changed当新的订单状态为垃圾时,我想解雇一些东西。

我使用了这个函数,它对于剩余订单状态(垃圾除外)非常有效。

这是我的代码:

function custom_order_actions ( $order_id, $old_status, $new_status ){
  $order = new WC_Order($order_id);

  if ($new_status == 'trash') {
    // Do something
  }
}
add_action( 'woocommerce_order_status_changed', 'custom_order_actions', 99, 3 );
Run Code Online (Sandbox Code Playgroud)

php wordpress woocommerce hook-woocommerce woocommerce-theming

3
推荐指数
1
解决办法
408
查看次数

如何从 Woocommerce 的“我的帐户”中删除“Paypal 付款”选项卡

Woocommerce Paypal 付款插件在 Woocommerce 我的帐户页面上添加了“Paypal 付款”选项卡。如何完全删除此选项卡?

我已经尝试过从此处找到的代码片段修改的代码片段,但未能成功删除该选项卡。

add_filter ( 'woocommerce_account_menu_items', 'misha_remove_my_account_links' );
function misha_remove_my_account_links( $menu_links ){
        
  unset( $menu_links['ppcp-paypal-payment-tokens'] );
        
  return $menu_links;
        
}
Run Code Online (Sandbox Code Playgroud)

php wordpress paypal woocommerce hook-woocommerce

3
推荐指数
1
解决办法
882
查看次数

WooCommerce 在变体标签后显示内容

我想在变体名称后添加内容。

我找到这个钩子并看到它之前可以工作,但在我的测试中它不是:(

我想问,是否有另一种钩子/工作方法可以用来添加内容?

add_filter('woocommerce_attribute_label', 'custom_attribute_label', 10, 3);
function custom_attribute_label($label, $name, $product){
    $taxonomy = 'pa_' . $name;

    if ($taxonomy == 'pa_size')
        $label .= '<div class="custom-label">' . __('MY TEXT', 'woocommerce') . '</div>';

    return $label;
}
Run Code Online (Sandbox Code Playgroud)

代码参考:
在 WooCommerce 中的特定产品属性标签旁边添加自定义文本

php wordpress woocommerce hook-woocommerce woocommerce-theming

3
推荐指数
1
解决办法
493
查看次数

增强的电子商务数据层WooCommerce

我正在尝试为WooCommerce设置dataLayer谢谢你的页面.看看到目前为止我做了什么(变量尚未完全设置):

function dataLayer_google_gtm( $order_id ) {

    // Lets grab the order
    $order = wc_get_order( $order_id );

    // Products
    $products = $order->get_items();
    ?>

    <script>
        dataLayer.push({
        'ecommerce': {
            'purchase': {
                'actionField':{
                    'id':'<?php echo $order->get_order_number(); ?>',
                    'affiliation':'CHACAFOODS', 
                    'revenue':'<?php echo $order->get_order_total(); ?>',
                    'tax':'<?php echo $order->get_total_tax(); ?>',
                    'shipping':'<?php echo $order->get_shipping(); ?>',
                    'coupon':'<?php echo $order->get_order_discount_total(); ?>',
                },
                window['service'].push('products':,[
                <?php
                    $count = 0;
                    foreach( $products as $item_id => $item ) {
                        $count++;
                        $product = $order->get_product_from_item( $item ); ?>
                        {
                            'name':<?php echo $item['name']; ?>',
                            'id':
                            'price': '<?php echo …
Run Code Online (Sandbox Code Playgroud)

javascript php woocommerce google-tag-manager hook-woocommerce

2
推荐指数
1
解决办法
4099
查看次数