Skip to content

Instantly share code, notes, and snippets.

@woogist
Created June 8, 2015 13:07
Show Gist options
  • Select an option

  • Save woogist/7204165c39bc2aa60cd3 to your computer and use it in GitHub Desktop.

Select an option

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 );
}
@speratumbiopharma

Copy link
Copy Markdown

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
Copy Markdown

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