如何从自定义文本字段调用值并将其动态放置在表单属性中?

时间:2017-11-24 18:14:10

标签: php wordpress woocommerce product custom-fields

我正在使用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');

有人知道如何实现这一目标吗?

1 个答案:

答案 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>