更新(末):
問題仍然$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);
現在你可以問插件的作者因爲這是一種更經典的方式:發佈元數據。
「iphorm_pre_display_3」不是WooCommerce掛鉤...這意味着您正在使用第三方插件。你應該更新你的問題,關於你正在使用的這個表單插件的更多細節... – LoicTheAztec
謝謝。我用更多的細節修改了我的問題。 – Dan