- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 woocommerce-advanced-checkout-fields 插件并在计费部分添加了一个转发器字段,如下所示
如上图所示,中继器字段“姓名/电子邮件”适用于产品“腰带”
现在,当我去商店购买产品并将数量设为 3 时,转发器字段显示 3 次,一切都很好。
现在,当我下订单时,着陆页不包含我输入的值,如下所示
此外,这些值未显示在“订单管理”部分中,如下所示。
我相信我已经清楚地阐述了这个问题。需要您的建议来解决这个问题
最佳答案
因为您在开始赏金后没有回复任何评论。如果不知道您正在使用的设置是什么,以及与订单的此附加字段的数据库相关的后元数据(已注册的元键)是什么,没有人可以解决您的问题......
要根据特定产品的项目数量没有任何插件获取特定自定义结账账单字段的转发器:
1) 产品附加设置 (激活此功能的复选框):
// Display a custom setting option on product edit pages
add_action('woocommerce_product_options_general_product_data', 'add_product_repeater_checkbox_option');
function add_product_repeater_checkbox_option(){
echo '<div class="product_custom_field">';
// Custom Product Checkbox Field
woocommerce_wp_checkbox( array(
'id' => '_qty_repeater',
'label' => __('Qty repeater', 'woocommerce'),
'description' => __('Enable quantity repeater for additional "Name" and "Email" billing checkout fields', 'woocommerce'),
'desc_tip' => 'true'
));
echo '</div>';
}
// Save the custom setting option value from product edit pages
add_action( 'woocommerce_admin_process_product_object', 'save_product_repeater_checkbox_option', 100, 1 );
function save_product_repeater_checkbox_option( $product ) {
$qty_repeater = isset( $_POST['_qty_repeater'] ) ? 'yes' : 'no';
$product->update_meta_data( '_qty_repeater', $qty_repeater );
}
2) 在结帐时添加/保存重复的附加字段 (并标记订单):
add_filter('woocommerce_billing_fields', 'additional_billing_checkout_fields', 50, 1 );
function additional_billing_checkout_fields( $billing_fields ) {
foreach(WC()->cart->get_cart() as $cart_item ){
// Check if the "Quanty repeater option is set for the current item
if( $cart_item['data']->get_meta('_qty_repeater') === 'yes' && is_checkout() && $cart_item['quantity'] > 1 ) {
// Quantity repeater
for( $i = 1, $j = 2; $i < $cart_item['quantity']; $i++, $j++ ){
// Name fields
$billing_fields['billing_name_person'.$j] = array(
'type' => 'text',
'label' => __("Name", "woocommerce") . ' ' . $j,
'class' => array('form-row-first'),
'required' => true,
'clear' => false,
);
// Email fields
$billing_fields['billing_email_person'.$j] = array(
'type' => 'email',
'label' => __("Email", "woocommerce") . ' ' . $j,
'class' => array('form-row-last'),
'required' => true,
'clear' => true,
);
}
break; // Only for one item
}
}
return $billing_fields;
}
// Mark Order as having this additional fields data values
add_action('woocommerce_checkout_create_order', 'save_additional_billing_checkout_fields', 20, 2);
function save_additional_billing_checkout_fields( $order, $data ) {
foreach( $order->get_items() as $item ){
$product = $item->get_product();
// Mark the order as containing additional fields
if( $product->get_meta('_qty_repeater') === 'yes' && $item->get_quantity() > 1 ) {
$item->update_meta_data( '_qty_repeater', '1' );
break; // Stop the loop
}
}
}
3) 在任何地方显示额外的账单字段相关数据 (管理订单、订单 View 、电子邮件):
// Display additional billing fields values
add_action('woocommerce_order_details_after_order_table', 'display_additional_billing_fields_values' ); // Order received and view
add_action( 'woocommerce_email_after_order_table', 'display_additional_billing_fields_values' ); // Email notifications
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_additional_billing_fields_values' ); // Admin edit Order
function display_additional_billing_fields_values( $order ) {
if( $order->get_meta('_qty_repeater') ) {
// Only for email notifications
if( ! ( is_wc_endpoint_url() || is_checkout() || is_admin() ) ){
echo '<style>
table.customer-details {width: 100%; font-family: \'Helvetica Neue\', Helvetica, Roboto, Arial, sans-serif;
color: #737373; border: 1px solid #e4e4e4; margin-bottom:40px;}
table.customer-details td{text-align: left; border-top-width: 4px; color: #737373; border: 1px solid #e4e4e4;
padding: 12px; padding-bottom: 4px;}
</style>';
}
// Others
else {
echo '<style> table.customer-details, table.customer-details td { border: none; } </style>';
}
echo '<h2>' . __( 'Customer details', 'woocommerce' ) . '</h2>';
echo '<div><table class="customer-details" cellspacing="0">';
// Loop through order items
foreach( $order->get_items() as $item ){
$product = $item->get_product();
if( $product->get_meta('_qty_repeater') === 'yes' ) {
// Loop through item quantity
for( $i = 1, $j = 2; $i < $item->get_quantity(); $i++, $j++ ){
// Name
echo '<tr><td><strong>' . __("Name", "woocommerce") . ' ' . $j;
echo ': </strong>' . $order->get_meta('_billing_name_person'.$j) . '</td>';
// Email
echo '<td><strong>' . __("Email", "woocommerce") . ' ' . $j;
echo ': </strong>' . $order->get_meta('_billing_email_person'.$j) . '</td></tr>';
}
break;
}
}
echo '</table></div>';
}
}
4) 使额外的账单字段可编辑 (管理员):
add_filter( 'woocommerce_admin_billing_fields' , 'additional_admin_editable_billing_fields' );
function additional_admin_editable_billing_fields( $fields ) {
global $pagenow, $post;
if( $pagenow != 'post.php' ) return $fields;
$order = wc_get_order($post->ID);
if( $order->get_meta('_qty_repeater') ) {
// Loop through order items
foreach( $order->get_items() as $item ){
$product = $item->get_product();
if( $product->get_meta('_qty_repeater') === 'yes' ) {
// Loop through item quantity
for( $i = 1, $j = 2; $i < $item->get_quantity(); $i++, $j++ ){
$fields['name_person'.$j] = array(
'label' => __("Name", "woocommerce") . ' ' . $j,
'show' => false,
'wrapper_class' => 'first',
);
$fields['email_person'.$j] = array(
'label' => __("Email", "woocommerce") . ' ' . $j,
'show' => false,
'wrapper_class' => 'last',
);
}
break;
}
}
}
return $fields;
}
代码进入事件子主题(或事件主题)的 function.php 文件。经过测试并有效。
关于php - Woocommerce 中基于产品数量生成结帐字段的 ACF 转发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731705/
我有一个自定义帖子类型,其中设置了一些 ACF 字段。我还设置了 ACF 选项页面。 我正在尝试更新所有自定义帖子的文本字段,并在“选项”页面更新时,从选项页面中的文本字段中的值更新。。 这是我尝试过
我正在使用 ACF 的 acf/validate_save_post 操作 Hook ,在表单提交并保存为帖子类型之前,使用第 3 方 API 验证来自前端表单的序列号。 如果对第 3 方 API 的
我的团队刚刚改用 acf-json,我们对如何使用 git 的团队处理文件有一些疑问。 问题基本上是,当 .json 文件显示为已修改时,我们是否应该始终提交它们?如果在 pull 后立即同步,每个团
我正在计算股票 yield 的自相关函数。为此,我测试了两个函数,即 Pandas 内置的 autocorr 函数和 statsmodels.tsa 提供的 acf 函数。这是在以下 MWE 中完成的
我在为使用 Php 创建的 Woocommerce 产品分配产品类别时遇到问题。(环境为Wordpress 5.6.1、Woocommerce 5.0、Php 7.4.14、ACF Pro 5.9.5
我正在尝试更改在 R 中生成的 acf 图并且我没有运气。我的目标是在一个图中绘制多个自相关,而不是使用标准直方图,我想将自相关绘制为使用不同颜色的线,因此很容易区分不同的自相关。该图还应包括 95%
我在使用 ACF 方面相当陌生,所以我使用了他们网站上显示的代码来显示我的转发器字段中的内容。 但是,当我尝试显示转发器的内容时,它是空的??这是我的代码,它仍处于试用模式,只是为了看看它是否能正
我想更改这个简单的 acf 绘图将创建的标题,但我不确定该怎么做,因为它默认为变量名称 d.sales2 . AutoCorrelation <- acf(d.sales.2) plot(AutoCo
我正在使用 Advanced Custom Fields (ACF) 并尝试以编程方式将中继器添加到现有组 (group_5621b0871e1b1),但它不起作用。相同的代码适用于文本字段,但不适用
我使用高级自定义字段创建了一个字段,并为包装器属性分配了一个类。但是我还没有找到任何方法/文档如何准确地获取这些信息(如何获取类(class))。 我使用 get_field 来获取该字段的所有值,但
我正在使用 Bootstrap 中的代码片段: https://bootsnipp.com/snippets/featured/material-card-reveal-with-image-eff
我有一些自定义帖子类型“视频”,我向其中添加了一些自定义 ACF 字段(“video_path”、“author_name”和“audio_author”)。我正在以编程方式生成该类型的帖子,如下所示
我在我的 WordPress 网站上使用高级自定义字段插件。我正在页面上显示子页面中中继器字段(“photos_presse”)的第一张图像(“照片”)。这是我正在使用的 php 代码。
我在关注官方guide在 ACF 文档中,但未能正确处理。我正在使用高级自定义字段和自定义帖子类型 UI 插件。 我有一个名为materials 的自定义帖子类型,每个 Material 都有一个
我正在尝试在我的站点中使用来自 ACF 的谷歌地图字段。我有一个 api key 并且正在使用示例代码。我可以在页面上看到 block 元素,但没有内容。 我收到以下错误 google-maps.js
一段时间以来一直在尝试为此找到解决方案,但一直未能想出任何可行的方法。 我的目标是,当您将鼠标悬停在这个特定的 div 上时,背景图像将变为该背景图像的深色版本。我试过使用 filter 属性,但它会
我有一个自定义帖子类型,其中包含一个包含 5 个子字段的转发器字段。我需要重建这些帖子,以便子字段是普通字段,无需复制和粘贴。它们的中继器和字段都显示在帖子中并且具有相同的名称。 有办法做到这一点吗?
我正在制作我的第一个 WordPress 主题,并使用高级自定义字段在主页上创建一个服务部分。 他使用的自定义字段是Repeater字段、Text字段、Textarea字段和Image字段。 我在 c
我仍在学习 php,但无法理解这一点。 对于 Wordpress 中的循环,我想输出一个包含位置的列表,用逗号分隔并以点结尾。 这是我的代码: W
您好,有人知道为什么我的 ACF 没有为我的时间序列绘制滞后最大值吗?对于这个问题,您可以使用 R 中的航空旅客数据。 我的代码是: acf(z.t, lag.max = 40, main = exp
我是一名优秀的程序员,十分优秀!