我正在使用WordPress电子商务网站,我正在使用WooCommerce平台为购物功能提供支持。
我创建了一个自定义文本框,它出现在产品页面上。此文本框允许网站访问者输入他们希望在其产品上显示的任何文本。要创建此自定义文本框,我已在functions.php
文件中输入以下代码:
<div>
<label class="product-custom-text-label" for="engrave_text"><?php _e( 'Engraving option:', 'woocommerce'); ?><br>
<input style="min-width:220px" type="text" class="product-counter" name="engrave_text" placeholder="<?php _e( 'Enter Your Custom Letters ...', 'woocommerce'); ?>" minlength="2" maxlength="3" />
</label>
</div>
如您所见,我手动/静态输入了minlength="2" maxlength="3"
属性。我不想手动输入所述属性,而是想在WooCommerce产品仪表板中动态调用自定义字段中的值。
WooCommerce产品信息中心:自定义字段
要在WooCommerce产品信息中心内创建自定义字段,我在functions.php
文件中输入以下代码:
function product_custom_lettering(){
echo '<div class="product_custom_field">';
woocommerce_wp_text_input(
array(
'id' => '_minimum_engrave_text_option',
'desc' => __('set custom minimum Lettering text field', 'woocommerce'),
'label' => __('Minimum Letters', 'woocommerce'),
'desc_tip' => 'true'
)
);
echo '</div>';
}
add_action('woocommerce_product_options_general_product_data', 'product_custom_lettering');
有人知道如何实现这一目标吗?
答案 0 :(得分:2)
此函数具有custom_attributes参数,可以传递您需要的参数。我添加了&#34; name&#34;属于你的功能:
function product_custom_lettering(){
echo '<div class="product_custom_field">';
woocommerce_wp_text_input(
array(
'id' => '_minimum_engrave_text_option',
'name' => '_minimum_engrave_text_option',
'desc' => __('set custom minimum Lettering text field', 'woocommerce'),
'label' => __('Minimum Letters', 'woocommerce'),
'desc_tip' => 'true'
)
);
echo '</div>';
}
add_action('woocommerce_product_options_general_product_data', 'product_custom_lettering');
接下来我们需要添加保存自定义字段功能,您似乎尚未添加:
add_action( 'woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save' );
function woocommerce_product_custom_fields_save($post_id)
{
$woocommerce_custom_product_text_field = $_POST['_minimum_engrave_text_option'];
if (!empty($woocommerce_custom_product_text_field))
update_post_meta($post_id, '_minimum_engrave_text_option', esc_attr($woocommerce_custom_product_text_field));
}
所以,现在我们已经有了一个可以通过wp-admin设置的自定义字段。
最后我们需要在自定义代码中调用它:
<div>
<label class="product-custom-text-label" for="engrave_text"><?php _e( 'Engraving option:', 'woocommerce'); ?><br>
<input style="min-width:220px" type="text" class="product-counter" name="engrave_text" placeholder="<?php _e( 'Enter Your Custom Letters ...', 'woocommerce'); ?>" minlength="<?php global $post; echo get_post_meta($post->ID,'_minimum_engrave_text_option',true);?>" maxlength="3" />
</label>
</div>