作为一个新手,我希望我以正确的格式发布这篇文章.我熟悉WordPress,但对PHP非常陌生.

The Concept: 使用自定义字段(course_content_page_url)将页面链接添加到产品中.一旦进行了购买并在"帐户"页面上生成了订单,该字段将被添加到订单页面.然后,一列显示此URL,允许用户从仪表板访问它.

我已经创建了一个WooCommerce产品,其中有一个使用ACF的自定义字段.此自定义字段数据需要显示在"帐户"页面上的订单选项卡下的新列中.我已经设法创建了一个列并将其链接到我的自定义字段,但它并不显示字段中的数据,默认值为"没有给定URL".

Here's the article I followed but it doesn't seem to be working for me.

add_filter( 'woocommerce_account_orders_columns', 'add_account_orders_column', 10, 1 );
function add_account_orders_column( $columns ){
    $order_actions  = $columns['order-actions']; // Save Order actions
    unset($columns['order-actions']); // Remove Order actions

    // Add your custom column key / label
    $columns['course_content_page_url'] = __( 'Course URL', 'woocommerce' );

    // Add back previously saved "Order actions"
    $columns['order-actions'] = $order_actions;

    return $columns;
}

// Display a custom field value from order metadata
add_action( 'woocommerce_my_account_my_orders_column_course_content_page_url', 'add_account_orders_column_rows' );
function add_account_orders_column_rows( $order ) {
    // Example with a custom field
    if ( $value = $order->get_meta( 'course_content_page_url' ) ) {
        esc_html_e( $value );
    } else {
        printf( '<small>%s</small>', __("no url given") );
    }
}

The screenshot:. Account dashboard with no value showing.

是否有任何方法可以将此自定义字段数据添加到订购邮箱中?

推荐答案

由于您在产品上使用高级自定义字段,订单本身中没有任何相关的元数据,您需要通过订单项目,获取产品,然后从该产品获取ACF值.

在第二个功能中,您必须在ACF get_field()功能中设置the correct key.

try 以下方法:

add_filter( 'woocommerce_account_orders_columns', 'add_account_orders_column', 10, 1 );
function add_account_orders_column( $columns ){
    $order_actions  = $columns['order-actions']; // Save Order actions
    unset($columns['order-actions']); // Remove Order actions

    // Add your custom column key / label
    $columns['course_url'] = __( 'Course URL', 'woocommerce' );

    // Add back previously saved "Order actions"
    $columns['order-actions'] = $order_actions;

    return $columns;
}

// Display a custom field value from order metadata
add_action( 'woocommerce_my_account_my_orders_column_course_url', 'add_account_orders_column_rows' );
function add_account_orders_column_rows( $order ) {
    $course_urls = array(); // Initialize

    // Loop though order items
    foreach ( $order->get_items() as $item ) {
        // Set the correct key For the ACF field below
        if ( $url = get_field( 'your-acf-key', $item->get_product_id() ) ) {
            $course_urls[] = sprintf( '<a href="%s">%s</a>', esc_url($url), __('Link') );
        }
    }
    // Display
    if ( count($course_urls) > 0 ) {
        echo implode('<br>', $course_urls);
    } else {
        printf( '<small>%s</small>', __("no url given") );
    }
}

它可以工作.

Php相关问答推荐

如何发送woocommerce订单跟踪码与短信

邮箱打开跟踪器不工作时发送邮件使用laravel调度程序

如何使用`preg_replace`删除重复的空格字符

使用PHP阅读XML提要

WooCommerce管理订单列表自定义列不显示值

通过DO LAMP进行身份验证并从邮箱发送邮箱的最简单方式是什么

不包括WooCommerce中单独销售的产品

是否重新排序多维数组元素以将所有子数组中的子数组移动到元素列表的底部?

WooCommerce短代码,显示特定产品的购物车徽章中的当前数量

无法在 WordPress 上获取 JSON 数据

无法允许元素(img:'src')与symfony html-sanitizer(symfony6.3 php 8.2)

在 WooCommerce 中何时何地执行 woocommerce_order_status_completed_notification 挂钩?

woocommerce_available_ payment_gateways 过滤器挂钩多次触发

WooCommerce:如果订单总数为零,则隐藏本地取货运输选项

PHP 中使用 JSON 的自定义会话处理程序会因错误而 destruct 会话

PHP 中的 libgd 无法读取 Apache 配置中的 SetEnv GDFONTPATH

注册命名空间后如何获取xml node 值?

基于WooCommerce中的产品变体自定义感谢页面跳转

如何用 php ML 解决这个问题?

PHP获取根据辞职日期自动续订的合同终止日期