这里有新海报,希望格式正确。我了解 WordPress,但对 php 非常陌生。
想法: 使用自定义字段将页面链接添加到产品中。一旦进行购买并在帐户页面上生成订单,该字段就会添加到订单页面。然后一列会输出此 URL,以便用户可以从仪表板访问该 URL。
我创建了一个 Woocommerce 产品,其中包含使用 ACF 创建的自定义字段。此自定义字段数据需要显示在帐户页面上订单选项卡下的新列中。我创建了列并将其链接到我的自定义字段,但它没有显示该字段中的数据,并且默认为“未给出 url”。
**代码:**
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") );
}
}
有什么方法可以将此自定义字段数据也添加到订购电子邮件中吗?
由于您在产品上使用高级自定义字段,订单本身没有任何相关元数据,您需要通过订单项,获取产品,然后从该产品中获取自定义字段。
在第二个功能中,您必须在
get_field()
功能中设置正确的 ACF 键。
尝试以下操作:
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( 'course-url', $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") );
}
}
它可以工作。