Skip to content

Instantly share code, notes, and snippets.

@woogist
Created June 8, 2015 13:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save woogist/7204165c39bc2aa60cd3 to your computer and use it in GitHub Desktop.
Save woogist/7204165c39bc2aa60cd3 to your computer and use it in GitHub Desktop.
WooCommerce Product Vendors: Add extra custom fields to vendor profiles
// Add fields to new vendor form
add_action( 'shop_vendor_add_form_fields', 'custom_add_vendor_fields', 2, 1 );
function custom_add_vendor_fields( $taxonomy ) {
?>
<div class="form-field">
<label for="vendor_website"><?php _e( 'Vendor website' ); ?></label>
<input type="text" name="vendor_data[website]" id="vendor_website" class="vendor_fields" /><br/>
<span class="description"><?php _e( 'The vendor\'s website.' ); ?></span>
</div>
<?php
}
// Add fields to vendor edit form for admins to edit
add_action( 'shop_vendor_edit_form_fields', 'custom_edit_vendor_fields', 2, 1 );
function custom_edit_vendor_fields( $vendor ) {
$vendor_id = $vendor->term_id;
$vendor_data = get_option( 'shop_vendor_' . $vendor_id );
$vendor_website = '';
if( isset( $vendor_data['website'] ) && ( strlen( $vendor_data['website'] ) > 0 || $vendor_data['website'] != '' ) ) {
$vendor_website = $vendor_data['website'];
}
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="vendor_website"><?php _e( 'Vendor website' ); ?></label></th>
<td>
<input type="text" name="vendor_data[website]" id="vendor_website" class="vendor_fields" value="<?php echo $vendor_website; ?>" /><br/>
<span class="description"><?php _e( 'The vendor\'s website' ); ?></span>
</td>
</tr>
<?php
}
// Add fields to vendor details form for vendors to edit
add_action( 'product_vendors_details_fields', 'custom_vendor_details_fields', 10, 1 );
function custom_vendor_details_fields( $vendor_id ) {
$vendor = get_user_vendor();
$vendor_data = get_option( 'shop_vendor_' . $vendor->ID );
$vendor_info = get_vendor( $vendor->ID );
$vendor_website = '';
if( isset( $vendor_data['website'] ) && ( strlen( $vendor_data['website'] ) > 0 || $vendor_data['website'] != '' ) ) {
$vendor_website = $vendor_data['website'];
}
$html = '<p class="form-field">
<label for="vendor_website">' . __( 'Website' ) . ':</label>
<input type="text" name="wc_product_vendors_website_' . $vendor->ID . '" id="vendor_website" class="vendor_fields" />
</p>';
echo $html;
}
// Save fields from vendor details form
add_action( 'product_vendors_details_fields_save', 'custom_vendor_details_fields_save', 10, 2 );
function custom_vendor_details_fields_save( $vendor_id, $posted ) {
$vendor_data = get_option( 'shop_vendor_' . $vendor_id );
if( isset( $posted[ 'wc_product_vendors_website_' . $vendor_id ] ) ) {
$vendor_data['website'] = $posted[ 'wc_product_vendors_website_' . $vendor_id ];
}
update_option( 'shop_vendor_' . $vendor_id, $vendor_data );
}
@navneet13
Copy link

i have used a custom code for my vendor registration page but it is not showing in vendor admin page this is the code that i have used in function.php
function add_vendor_custom_fields() {

wp_nonce_field( basename( __FILE__ ), 'vendor_custom_fields_nonce' );
?>

<textarea class="input-text" name="vendor_address" id="vendor_address" rows="2" tabindex="9"></textarea>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-job"><?php esc_html_e( 'Current Job', 'woocommerce-product-vendors' ); ?> </label>
    <input class="input-text" type="text" name="vendor_job" id="vendor_job" value="<?php if ( ! empty( $_POST['vendor_job'] ) ) echo esc_attr( trim( $_POST['vendor_job'] ) ); ?>" tabindex="10" />
</p>
<p class="form-row form-row-wide">
    <label for="wcpv-vendor-type"><?php esc_html_e( 'Type of Chef', 'woocommerce-product-vendors' ); ?> </label>
    <input class="input-text" type="text" name="vendor_type" id="vendor_type" value="<?php if ( ! empty( $_POST['vendor_type'] ) ) echo esc_attr( trim( $_POST['vendor_type'] ) ); ?>" tabindex="10" />
</p>

<p class="form-row form-row-wide">
<label for="wcpv-vendor-cv"><?php _e( 'CV', 'woocommerce-product-vendors' ); ?> </label>
<input type="file" name="vendor_cv" id="vendor_cv" value="<?php if ( ! empty( $_POST['vendor_cv'] ) ) esc_attr_e( $_POST['vendor_cv'] ); ?>" tabindex="11" />
</p>

<p class="form-row form-row-wide">
<label for="wcpv-vendor-photo"><?php _e( 'Photo', 'woocommerce-product-vendors' ); ?> </label>
<input type="file" name="vendor_photo" id="vendor_photo" value="<?php if ( ! empty( $_POST['vendor_photo'] ) ) esc_attr_e( $_POST['vendor_photo'] ); ?>" tabindex="12" />
</p>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-biography"><?php esc_html_e( 'Biography', 'woocommerce-product-vendors' ); ?> </label>
    <textarea class="input-text" name="vendor_biography" id="vendor_biography" rows="2" tabindex="13"><?php if ( ! empty( $_POST['vendor_biography'] ) ) echo trim( $_POST['vendor_biography'] ); ?></textarea>
</p>
<p class="form-row form-row-wide">
    <label for="wcpv-vendor-priceperhour"><?php esc_html_e( 'Price Per Hour', 'woocommerce-product-vendors' ); ?> </label>
    <input class="input-text" type="text" name="vendor_priceperhour" id="vendor_priceherhour" value="<?php if ( ! empty( $_POST['vendor_priceperhour'] ) ) echo esc_attr( trim( $_POST['vendor_priceperhour'] ) ); ?>" tabindex="10" />
</p>
<p class="form-row form-row-wide">
    <label for="wcpv-vendor-sex"><?php esc_html_e( 'Gender', 'woocommerce-product-vendors' ); ?> </label>
    <input class="input-text" type="text" name="vendor_sex" id="vendor_sex" value="<?php if ( ! empty( $_POST['vendor_sex'] ) ) echo esc_attr( trim( $_POST['vendor_sex'] ) ); ?>" tabindex="10" />
</p>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-size"><?php esc_html_e( 'Clothing Size', 'woocommerce-product-vendors' ); ?> </label>
    <select name="vendor_size" id="vendor_size" value="<?php if ( ! empty( $_POST['vendor_size'] ) ) echo esc_attr( trim( $_POST['vendor_size'] ) ); ?>" tabindex="16">
      <option value="s">S</option>
      <option value="m">M</option>
      <option value="l">L</option>
      <option value="xl">XL</option>
    </select>
</p>
<div class="form-field">
    <label for="vendor_job"><?php _e( 'vendor_job', 'woocommerce-product-vendors' ); ?></label>
    <input type="text" name="vendor_job" id="vendor_job" value="" />
</div>

<div class="form-field">
    <label for="vendor_address"><?php _e( 'vendor_address', 'woocommerce-product-vendors' ); ?></label>
    <input type="text" name="vendor_address" id="vendor_address" value="" />
</div>
<?php

}
/**

  • Edit term fields form
    _/
    function edit_vendor_custom_fields( $term ) {
    wp_nonce_field( basename( FILE ), 'vendor_custom_fields_nonce' );
    ?> S M L XL
  • Save term fields
    */
    function save_vendor_custom_fields( $term_id ) {
    if ( ! wp_verify_nonce( $_POST['vendor_custom_fields_nonce'], basename( FILE ) ) ) {
    return;
    }
    $old_vendor_job = get_term_meta( $term_id, 'vendor_job', true );
    $old_vendor_address = get_term_meta( $term_id, 'vendor_address', true );
    $old_vendor_biography = get_term_meta( $term_id, 'vendor_biography', true );
    $old_vendor_photo = get_term_meta( $term_id, 'vendor_photo', true );
    $old_vendor_cv = get_term_meta( $term_id, 'vendor_cv', true );
    $old_vendor_type = get_term_meta( $term_id, 'vendor_type', true );
    $old_vendor_size = get_term_meta( $term_id, 'vendor_size', true );
    $old_vendor_priceperhour = get_term_meta( $term_id, 'vendor_priceperhour', true );
    $old_vendor_sex = get_term_meta( $term_id, 'vendor_sex', true );
    $new_vendor_job = ( $_POST['vendor_job'] );
    $new_vendor_address = ( $_POST['vendor_address'] );
    $new_vendor_biography = ( $_POST['vendor_biography'] );
    $new_vendor_photo = ( $_POST['vendor_photo'] );
    $new_vendor_cv = ( $_POST['vendor_cv'] );
    $new_vendor_type = ( $_POST['vendor_type'] );
    $new_vendor_size = ( $_POST['vendor_size'] );
    $new_vendor_priceperhour = ( $_POST['vendor_priceperhour'] );
    $new_vendor_sex = ( $_POST['vendor_sex'] );
    if ( ! empty( $old_vendor_size ) && $new_vendor_size === '' ) {
    delete_term_meta( $term_id, 'vendor_size' );
    } else if ( $old_vendor_size !== $new_vendor_size ) {
    update_term_meta( $term_id, 'vendor_size', $new_vendor_size, $old_vendor_size );
    }
    if ( ! empty( $old_vendor_priceperhour ) && $new_vendor_priceperhour === '' ) {
    delete_term_meta( $term_id, 'vendor_priceperhour' );
    } else if ( $old_vendor_priceperhour !== $new_vendor_priceperhour ) {
    update_term_meta( $term_id, 'vendor_priceperhour', $new_vendor_priceperhour, $old_vendor_priceperhour );
    }
    if ( ! empty( $old_vendor_sex ) && $new_vendor_sex === '' ) {
    delete_term_meta( $term_id, 'vendor_sex' );
    } else if ( $old_vendor_sex !== $new_vendor_sex ) {
    update_term_meta( $term_id, 'vendor_sex', $new_vendor_sex, $old_vendor_sex );
    }
    if ( ! empty( $old_vendor_job ) && $new_vendor_job === '' ) {
    delete_term_meta( $term_id, 'vendor_job' );
    } else if ( $old_vendor_job !== $new_vendor_job ) {
    update_term_meta( $term_id, 'vendor_job', $new_vendor_job, $old_vendor_job );
    }
    if ( ! empty( $old_vendor_address ) && $new_vendor_address === '' ) {
    delete_term_meta( $term_id, 'vendor_address' );
    } else if ( $old_vendor_address !== $new_vendor_address ) {
    update_term_meta( $term_id, 'vendor_address', $new_vendor_address, $old_vendor_address );
    }
    if ( ! empty( $old_vendor_biography ) && $new_vendor_biography === '' ) {
    delete_term_meta( $term_id, 'vendor_biography' );
    } else if ( $old_vendor_biography !== $new_vendor_biography ) {
    update_term_meta( $term_id, 'vendor_biography', $new_vendor_biography, $old_vendor_biography );
    }
    if ( ! empty( $old_vendor_photo ) && $new_vendor_photo === '' ) {
    delete_term_meta( $term_id, 'vendor_photo' );
    } else if ( $old_vendor_photo !== $new_vendor_photo ) {
    update_term_meta( $term_id, 'vendor_photo', $new_vendor_photo, $old_vendor_photo );
    }
    if ( ! empty( $old_vendor_cv ) && $new_vendor_cv === '' ) {
    delete_term_meta( $term_id, 'vendor_cv' );
    } else if ( $old_vendor_cv !== $new_vendor_cv ) {
    update_term_meta( $term_id, 'vendor_cv', $new_vendor_cv, $old_vendor_cv );
    }
    if ( ! empty( $old_vendor_type ) && $new_vendor_type === '' ) {
    delete_term_meta( $term_id, 'vendor_type' );
    } else if ( $old_vendor_type !== $new_vendor_type ) {
    update_term_meta( $term_id, 'vendor_type', $new_vendor_type, $old_vendor_type );
    }
    }
    add_action( 'wcpv_registration_form', 'vendors_reg_custom_fields' );
    function vendors_reg_custom_fields() {
    ?>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-job"><?php esc_html_e( 'Current Job', 'woocommerce-product-vendors' ); ?> </label>
    <input class="input-text" type="text" name="vendor_job" id="vendor_job" value="<?php if ( ! empty( $_POST['vendor_job'] ) ) echo esc_attr( trim( $_POST['vendor_job'] ) ); ?>" tabindex="10" />
</p>

<p class="form-row form-row-wide">
<label for="wcpv-vendor-cv"><?php _e( 'CV', 'woocommerce-product-vendors' ); ?> </label>
<input type="file" name="vendor_cv" id="vendor_cv" value="<?php if ( ! empty( $_POST['vendor_cv'] ) ) esc_attr_e( $_POST['vendor_cv'] ); ?>" tabindex="11" />
</p>

<p class="form-row form-row-wide">
<label for="wcpv-vendor-photo"><?php _e( 'Photo', 'woocommerce-product-vendors' ); ?> </label>
<input type="file" name="vendor_photo" id="vendor_photo" value="<?php if ( ! empty( $_POST['vendor_photo'] ) ) esc_attr_e( $_POST['vendor_photo'] ); ?>" tabindex="12" />
</p>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-biography"><?php esc_html_e( 'Biography', 'woocommerce-product-vendors' ); ?> </label>
    <textarea class="input-text" name="vendor_biography" id="vendor_biography" rows="2" tabindex="13"><?php if ( ! empty( $_POST['vendor_biography'] ) ) echo trim( $_POST['vendor_biography'] ); ?></textarea>
</p>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-priceperhour"><?php esc_html_e( 'Price Per Hour', 'woocommerce-product-vendors' ); ?> </label>
    <input type="number" name="vendor_priceperhour" id="vendor_priceperhour" value="<?php if ( ! empty( $_POST['vendor_priceperhour'] ) ) echo esc_attr( trim( $_POST['vendor_priceperhour'] ) ); ?>" tabindex="14" />
</p>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-sex"><?php esc_html_e( 'Gender', 'woocommerce-product-vendors' ); ?> </label>
    <select name="vendor_sex" id="vendor_sex" value="<?php if ( ! empty( $_POST['vendor_sex'] ) ) echo esc_attr( trim( $_POST['vendor_sex'] ) ); ?>" tabindex="15">
      <option value="male">Male</option>
      <option value="femail">Female</option>
    </select>
</p>

<p class="form-row form-row-wide">
    <label for="wcpv-vendor-size"><?php esc_html_e( 'Clothing Size', 'woocommerce-product-vendors' ); ?> </label>
    <select name="vendor_size" id="vendor_size" value="<?php if ( ! empty( $_POST['vendor_size'] ) ) echo esc_attr( trim( $_POST['vendor_size'] ) ); ?>" tabindex="16">
      <option value="s">S</option>
      <option value="m">M</option>
      <option value="l">L</option>
      <option value="xl">XL</option>
    </select>
</p>
<?php

}
add_action( 'wcpv_shortcode_registration_form_process', 'vendors_reg_custom_fields_save', 10, 2 );
function vendors_reg_custom_fields_save( $args, $items ) {
$term = get_term_by( 'name', $items['vendor_name'], WC_PRODUCT_VENDORS_TAXONOMY );
if ( isset( $items['vendor_job'] ) && ! empty( $items['vendor_job'] ) ) {
$vendor_job = ( $items['vendor_job'] );
update_term_meta( $term->term_id, 'vendor_job', $vendor_job );
}
if ( isset( $items['vendor_address'] ) && ! empty( $items['vendor_address'] ) ) {
$vendor_address = ( $items['vendor_address'] );
update_term_meta( $term->term_id, 'vendor_address', $vendor_address );
}
if ( isset( $items['vendor_biography'] ) && ! empty( $items['vendor_biography'] ) ) {
$vendor_biography = ( $items['vendor_biography'] );
update_term_meta( $term->term_id, 'vendor_biography', $vendor_biography );
}
if ( isset( $items['vendor_size'] ) && ! empty( $items['vendor_size'] ) ) {
$vendor_size = ( $items['vendor_size'] );
update_term_meta( $term->term_id, 'vendor_size', $vendor_size );
}
if ( isset( $items['vendor_sex'] ) && ! empty( $items['vendor_sex'] ) ) {
$vendor_sex = ( $items['vendor_sex'] );
update_term_meta( $term->term_id, 'vendor_sex', $vendor_sex );
}
if ( isset( $items['vendor_priceperhour'] ) && ! empty( $items['vendor_priceperhour'] ) ) {
$vendor_priceperhour = ( $items['vendor_priceperhour'] );
update_term_meta( $term->term_id, 'vendor_priceperhour', $vendor_priceperhour );
}
if ( isset( $items['vendor_cv'] ) && ! empty( $items['vendor_cv'] ) ) {
$vendor_cv = ( $items['vendor_cv'] );
update_term_meta( $term->term_id, 'vendor_cv', $vendor_cv );
}
if ( isset( $items['vendor_photo'] ) && ! empty( $items['vendor_photo'] ) ) {
$vendor_photo = ( $items['vendor_photo'] );
update_term_meta( $term->term_id, 'vendor_photo', $vendor_photo );
}
}
?>

this is showing well in registration form but unable to find values in vendor admin

http://myhomeevent.com/dev/staff-registration/

this is the form

waiting for your reply thanks

@Hood-Market
Copy link

I'm confused. What is the goal of this? I've copied and pasted it in to my child.php and nothing new has popped up on the vendor's back-end.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment