在Quform钩子中获取Woocommerce产品属性值
我试图获取woocommerce产品产品属性(其名称为dwnfile
)的值。在Quform钩子中获取Woocommerce产品属性值
该值是一个要传入挂钩函数的url,该函数将填充表单重定向。我正在使用的表格是女佣Quform commercial plugin。
我已经收到了插件作者关于我的表单设置的代码,但是他们无法通知我如何获取属性值。
这是他们给我的最初代码:
function my_populate_wc_attribute($form)
{
$value = 'some value'; // Get the value from WooCommerce somehow
$form->setValue('iphorm_3_2', $value);
}
add_action('iphorm_pre_display_3', 'my_populate_wc_attribute');
这里是我的尝试:
function my_populate_wc_attribute($form)
{
global $product;
$value = array_shift(wc_get_product_terms($product->id, 'pa_dwnfile', array('fields' => 'names')));
$form->setValue('iphorm_3_2', $value);
}
add_action('iphorm_pre_display_3', 'my_populate_wc_attribute');
但价值似乎是空的。
对此有任何帮助吗?
更新(末):
问题仍然$product
全局对象(你不要在这个钩子获取)。
你应该尝试,而不是:
function my_populate_wc_attribute($form) {
global $post;
$term = wc_get_product_terms($post->id, 'pa_nopeus', array('fields' => 'names'));
$value = current($term);
$form->setValue('iphorm_3_2', $value);
}
add_action('iphorm_pre_display_3', 'my_populate_wc_attribute');
代码放在您的活动子主题(或主题)的function.php文件或也以任何插件文件。
这应该工作。
但是,这不是最好的办法。您应该在产品“常规”设置选项卡中添加自定义字段,而不是使用产品属性来获取URL值。
UPDATE:你的主要问题是,你的形式是不是在你的产品页面,所以你不能得到后ID
(or the product ID)
。
你可以尝试用产品自定义字段(而不是产品属性)来做到这一点。
下面是自定义字段代码:
// Add Fields
add_action('woocommerce_product_options_general_product_data', 'add_product_general_custom_field');
function add_product_general_custom_field() {
global $post;
// Get the selected value
$value = get_post_meta($post->ID, '_dwnfile', true);
if(empty($value)) $value = '';
woocommerce_wp_text_input(array(
'id' => 'dwnfile',
'label' => __('Download link', 'woocommerce'),
'placeholder' => '',
'desc_tip' => 'true',
'description' => __('Add your download link …', 'woocommerce'),
'value' => $value, // Displaying the selected value
));
}
// Save Fields
add_action('woocommerce_process_product_meta', 'save_product_general_custom_field');
function save_product_general_custom_field($post_id){
if(empty($_POST['dwnfile'])) return;
update_post_meta($post_id, '_dwnfile', esc_attr($_POST['dwnfile']));
}
你会得到你的“下载链接”自定义字段(在产品的常规选项):
代码放在你的活动子主题(或主题)或任何插件文件中的function.php文件。
表格应该在产品页面上以获取产品ID。如果不是这样的话,什么都不会起作用。
因此,你应该更好地告诉你正在尝试做什么。
,以便获得url值,您将使用:
$value = get_post_meta($post_id, '_dwnfile', true);
或者(如果没有定义产品ID):
$value = get_post_meta(get_the_id(), '_dwnfile', true);
现在你可以问插件的作者因为这是一种更经典的方式:发布元数据。
感谢您的帮助。我试过了,但它似乎没有奏效。我将“pa_nopeus”更改为“pa_dwnfile”,但似乎没有流过。 – Dan
@丹我更新了我的答案......全球的答案是**你不能让它工作,因为你的表单不在产品页面,因为你永远不会获得帖子ID **。所以你应该更好地告诉你想要做什么以及该表单位于何处。 – LoicTheAztec
感谢您的帮助。我做了一个小小的改变,似乎运作良好。我只是将代码更改为:$ value = get_post_meta(get_the_ID(),'_dwnfile',true); – Dan
“iphorm_pre_display_3”不是WooCommerce挂钩...这意味着您正在使用第三方插件。你应该更新你的问题,关于你正在使用的这个表单插件的更多细节... – LoicTheAztec
谢谢。我用更多的细节修改了我的问题。 – Dan