Trying to send a hidden input value to next page - php
I am trying to tweak Wordpress Jigoshop according to my customer's needs and I got a bit stuck. What I need is: when a product variation is selected, some additional options appear in the form of radio buttons which customers must chose. I've managed to get everything working, but what I need now is to send the selected radio button to the cart, checkout and so on when the submit button is clicked.
I am trying to use their product customization function to do this and their function is:
if (!function_exists('jigoshop_product_customize_panel')) {
function jigoshop_product_customize_panel() {
global $_product;
if ( isset( $_POST['Submit'] ) && $_POST['Submit'] == 'Save Personalization' ) {
$custom_products = (array) jigoshop_session::instance()->customized_products;
$custom_products[$_POST['customized_id']] = trim( wptexturize( $_POST['jigoshop_customized_product'] ));
jigoshop_session::instance()->customized_products = $custom_products;
}
if ( get_post_meta( $_product->ID , 'customizable', true ) == 'yes' ) :
$custom_products = (array) jigoshop_session::instance()->customized_products;
$custom = isset( $custom_products[$_product->ID] ) ? $custom_products[$_product->ID] : '';
$custom_length = get_post_meta( $_product->ID , 'customized_length', true );
$length_str = $custom_length == '' ? '' : sprintf( __( 'You may enter a maximum of %s characters.', 'jigoshop' ), $custom_length );
echo '<div class="panel" id="tab-customize">';
echo '<p>' . apply_filters('jigoshop_product_customize_heading', __('Enter your personal information as you want it to appear on the product.<br />'.$length_str, 'jigoshop')) . '</p>';
?>
<form action="" method="post">
<input type="hidden" name="customized_id" value="<?php echo esc_attr( $_product->ID ); ?>" />
<?php
if ( $custom_length == '' ) :
?>
<textarea
id="jigoshop_customized_product"
name="jigoshop_customized_product"
cols="60"
rows="4"><?php echo esc_textarea( $custom ); ?>
</textarea>
<?php else : ?>
<input
type="text"
id="jigoshop_customized_product"
name="jigoshop_customized_product"
size="<?php echo $custom_length; ?>"
maxlength="<?php echo $custom_length; ?>"
value="<?php echo esc_attr( $custom ); ?>" />
<?php endif; ?>
<p class="submit"><input name="Submit" type="submit" class="button-alt add_personalization" value="<?php _e( "Save Personalization", 'jigoshop' ); ?>" /></p>
</form>
<?php
echo '</div>';
endif;
}
}
I tried modifying their function to suit my needs and this is what I've come up with (where get_cod is the id and name of the hidden input and "Adauga in cos" is the value of my submit button):
if (!function_exists('salveaza_cod_material')) {
function salveaza_cod_material() {
global $_product;
if ( isset( $_POST['submit']) && $_POST('submit') == 'Adauga in cos') {
$custom_products = (array) jigoshop_session::instance()->customized_products;
$custom_products[$_POST['customized_id']] = trim( wptexturize( $_POST['get_cod'] ));
jigoshop_session::instance()->customized_products = $custom_products;
}
$custom_products = (array) jigoshop_session::instance()->customized_products;
$custom = isset( $custom_products[$_product->ID] ) ? $custom_products[$_product->ID] : '';
}}
However the value isn't sent to the next page. Can anybody please help? Cheers!
Here's an update containing more of the code:
<form action="<?php echo esc_url( $_product->add_to_cart_url() ); ?>" class="variations_form cart" method="post">
<fieldset class="variations">
<?php foreach ( $attributes as $name => $options ): ?>
<?php $sanitized_name = sanitize_title( $name ); ?>
<div>
<span class="select_label"><?php echo jigoshop_product::attribute_label('pa_'.$name); ?></span>
<select id="<?php echo esc_attr( $sanitized_name ); ?>" name="tax_<?php echo $sanitized_name; ?>">
<option value=""><?php echo __('Choose an option ', 'jigoshop') ?>…</option>
<?php foreach ( $options as $value ) : ?>
<?php if ( taxonomy_exists( 'pa_'.$sanitized_name )) : ?>
<?php $term = get_term_by( 'slug', $value, 'pa_'.$sanitized_name ); ?>
<option value="<?php echo esc_attr( $term->slug ); ?>"><?php echo $term->name; ?> </option>
<?php else : ?>
<option value="<?php echo esc_attr( sanitize_title( $value ) ); ?>"><?php echo $value; ?></option>
<?php endif;?>
<?php endforeach; ?>
</select>
</div>
<?php endforeach;?>
</fieldset>
<div id="piele-neagra" class="colors" style="display:none">
<ul class="materiale">
<li><input type="radio" name="piele-neagra" value="L73">
<p><img class="alignnone size-full wp-image-155" title="L73" src="http://www.scaune-directoriale.ro/wp-content/uploads/materiale/piele-neagra/L73.gif" alt="L73" width="72" height="72" /></p>
</li>
</ul>
</div>
<div id="stofa-mf" class="colors" style="display:none">
<ul class="materiale">
<li><input type="radio" name="tapiterie" value="MF01" />
...
<div id="stofa-rg" class="colors" style="display:none"> Stofa RG</div>
<div class="clear"></div>
<span id="cod_material"><?php echo esc_attr( $custom ); ?></span>
<span><?php echo trim( wptexturize( $_POST['get_cod'] )); ?></span>
<div class="single_variation"></div>
<?php do_action('jigoshop_before_add_to_cart_form_button'); ?>
<div class="variations_button" style="display:none;">
<input type="hidden" name="variation_id" value="" />
<input type="hidden" name="customized_id" value="<?php echo esc_attr( $_product->ID ); ?>" />
<input type="hidden" id="get_cod" name="get_cod" value="" />
<input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
<div class="quantity"><input name="quantity" value="1" size="4" title="Qty" class="input-text qty text" maxlength="12" /></div>
<input type="submit" id="submit_cart" class="button-alt" value="<?php esc_html_e('Add to cart', 'jigoshop'); ?>" />
</div>
<?php do_action('salveaza_cod_material'); ?>
<?php do_action('jigoshop_add_to_cart_form'); ?>
</form>
And this is the section of the cart that receives the value:
if ( !empty( $values['variation_id'] )) {
$product_id = $values['variation_id'];
} else {
$product_id = $values['product_id'];
}
$custom_products = (array) jigoshop_session::instance()->customized_products;
$custom = isset( $custom_products[$product_id] ) ? $custom_products[$product_id] : '';
if ( ! empty( $custom_products[$product_id] ) ) :
?>
<dl class="customization">
<dt class="customized_product_label"><?php echo apply_filters('jigoshop_customized_product_label', __('Personal: ','jigoshop') ); ?></dt>
<dd class="customized_product"><?php echo esc_textarea( $custom ); ?></dd>
</dl>
<? php
endif;
?>
It's just a typo: in if ( isset( $_POST['submit']) && $_POST('submit') == 'Adauga in cos'), replace $_POST('submit')by $_POST['submit']
Related
how we can enable and disable required field attribute from back end using PHP Wordpress
i have a option in my plugin that make this field required or not but how we can manage please any one give me some solution i have try but fail <div class="create-account"> <p> <label for="label_birthday"><?php echo esc_attr( $birthday_label, 'dobc' ); ?> <?php if ( 'yes' === $birthday_required ) : ?> <span class="required" style="color:red;">*</span> <?php endif; ?> </label> <input type="date" class="input-text" name="dobc_date_field" id="date of birthd " value="<?php echo esc_html( $show_date ); ?>" required/> <?php wp_nonce_field( 'birthday_nonce_action_checkout', 'birday_fields_checkout_nonce' ); ?> </p> </div> <div class="clear"></div> <?php }
If you wanna just html required attribute you can do something like this. <?php $required = ($birthday_required == 'yes') ? 'required' : '' ; ?> <input name="dobc_date_field" <?php echo $required; ?> />
How to pass multiple checkbox values to Wordpress Search? custom_tax[]=val1&custom_tax[]=val2
I am trying to build a custom search form in Wordpress where the user would be able to select custom taxonomies to filter the posts against. I am unfortunately getting this warning: Warning: urlencode() expects parameter 1 to be string, array given in /wordpress/wp-includes/formatting.php on line 5343, which is this function: function wp_basename( $path, $suffix = '' ) { return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) ); } Here is my code of the form: <form action="/" method="get"> <?php $post_type = !empty( $_GET['post_type'] ) ? $_GET['post_type'] : 'company'; ?> <label for="search" class="block"><?php echo __('Search', 'mydomain'); ?>:</label> <input type="radio" name="post_type" value="company" <?php echo $post_type == 'company' ? 'checked' : ''; ?>>Companies</input> <input type="radio" name="post_type" value="auditor" <?php echo $post_type == 'auditor' ? 'checked' : ''; ?>>Auditors</input> <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" class="block" placeholder="<?php echo __('Type here'); ?>" /> <div> <?php $certificates = get_terms([ 'taxonomy' => 'certificate', 'hide_empty' => false ]); foreach($certificates as $certificate) : ?> <input type="checkbox" name="certificate[]" id="certificate-<?php echo $certificate->slug; ?>" value="<?php echo $certificate->slug; ?>" <?php echo (!empty($_GET['certificate']) && in_array($certificate->slug, $_GET['certificate']) ) ? 'checked' : ''; ?>> <?php echo $certificate->name; ?> <?php endforeach; ?> </div> <input type="hidden" value="<?php echo pll_current_language(); ?>" name="lang" id="lang" /> <input type="submit" value="<?php echo __('Search'); ?>" /> </form> and this is how I attempt to see the search results: http://wordpress.local/?post_type=auditor&s=&certificate%5B%5D=iso-22000&certificate[]=iso-9001 Any ideas how to bypass this warning and still submit the checkboxes as an array? (custom_tax[])
Echo Option Value Based On Wordpress User Role
If someone can figure this out, man you would make my week! Basically what I'm trying to do is echo a different value in a option based on a the users role on Wordpress. If user is administrator echo = user#email.com If user is subscriber echo = admin#email.com Here is the code I am working with: if ( ! empty( $note_emails ) || $include_custom ) { ?> <div class="gv-note-email-container"> <label for="gv-note-email-to-<?php echo $entry_slug_esc; ?>" class="screen-reader-text"><?php echo $strings['also-email']; ?></label> <select class="gv-note-email-to" name="gv-note-to" id="gv-note-email-to-<?php echo $entry_slug_esc; ?>"> <?php foreach ( $note_emails as $email ) { ?> <option value="admin#email.com">admin#email.com</option> <?php } if( $include_custom ) { ?> <option value="custom"><?php echo self::strings('other-email'); ?></option> <?php } ?> </select> <fieldset class="gv-note-to-container"> <?php if( $include_custom ) { ?> <div class='gv-note-to-custom-container'> <label for="gv-note-email-to-custom-<?php echo $entry_slug_esc; ?>"><?php echo $strings['email-label']; ?></label> <input type="text" name="gv-note-to-custom" placeholder="<?php echo $strings['email-placeholder']; ?>" id="gv-note-to-custom-<?php echo $entry_slug_esc; ?>" value="" /> </div> <?php } ?> <div class='gv-note-subject-container'> <label for="gv-note-subject-<?php echo $entry_slug_esc; ?>"><?php echo $strings['subject-label']; ?></label> <input type="text" name="gv-note-subject" placeholder="<?php echo $strings['subject']; ?>" id="gv-note-subject-<?php echo $entry_slug_esc; ?>" value="" /> </div> </fieldset> </div> <?php }
Have you tried this? $user = wp_get_current_user(); if ( in_array( 'administrator', (array) $user->roles ) ) { //This user is administrator }
Need to change check box to multi select box php
I need to help to convert checkbox to multi select drop down PHP code - <?php if ( ! is_tax( 'job_listing_type' ) && empty( $job_types ) ) : ?> <ul class="job_types"> <?php foreach ( get_job_listing_types() as $type ) : ?> <li><label for="job_type_<?php echo $type->slug; ?>" class="<?php echo sanitize_title( $type->name ); ?>"><input type="checkbox" name="filter_job_type[]" value="<?php echo $type->slug; ?>" <?php checked( in_array( $type->slug, $selected_job_types ), true ); ?> id="job_type_<?php echo $type->slug; ?>" /> <?php echo $type->name; ?></label></li> <?php endforeach; ?> </ul> <input type="hidden" name="filter_job_type[]" value="" /> <?php elseif ( $job_types ) : ?> <?php foreach ( $job_types as $job_type ) : ?> <input type="hidden" name="filter_job_type[]" value="<?php echo sanitize_title( $job_type ); ?>" /> <?php endforeach; ?> <?php endif; ?>
Wordpress how to get post ID outside of the loop
I have a custom post type called 'bookings' that saves several fields of meta data to wp_postmeta. I have a page that displays all the entries from this custom post type, i.e. all the bookings. Here is the code to display my bookings: <?php $current_user = wp_get_current_user(); $args = array( 'post_type' => 'bookings', 'meta_query' => array( array( 'key' => 'wedding_user', 'value' => $current_user->display_name, 'compare' => '=', ) ) ); // Welcome echo '<div class="user_avatar">'.get_avatar( $current_user->ID, 32 ).'</div>'; echo '<div class="user_welcome"><p>Hello '.$current_user->display_name.' <span class="user_id">(ID# '.$current_user->ID.')</span></p>'; // The Query $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); if (get_post_meta( $the_query->post->ID, 'wedding_hidden_is_completed', true )==1) { $is_complete = 'Form Complete <br /><span class="small">('.get_post_meta( $the_query->post->ID, 'wedding_hidden_date_completed', true ).')</span>'; } else { $is_complete = 'Not Complete'; } echo '<p class="booking_id">Booking ID: DISTR' . $the_query->post->ID . '</p>'; echo '<ul class="show_bookings">'; echo '<li>' . get_post_meta( $the_query->post->ID, 'wedding_name', true ) . '</li>'; echo '<li>' . get_post_meta( $the_query->post->ID, 'wedding_date', true ) . '</li>'; echo '<li>' . get_post_meta( $the_query->post->ID, 'wedding_package', true ) . '</li>'; echo '<li>£' . get_post_meta( $the_query->post->ID, 'wedding_price', true ). '</li>'; echo '<li>' . get_post_meta( $the_query->post->ID, 'wedding_payment_due_date', true ) . '</li>'; echo '<li>' . $is_complete . '</li>'; echo '<li>Is Viewed?</li>'; echo '<li>Actions'; echo '<ul class="actions-sub-menu">'; echo '<li>Fill out booking form</li>'; echo '<li>Pay deposit</li>'; echo '<li>Pay remaining balance</li>'; echo '<li>Email a copy of your receipt</li>'; echo '<li>View booking form</li>'; echo '</ul>'; echo '</li> <!--end actions-sub-menu-->'; echo '</ul>'; ?> <div class="pay_deposit"> <?php require DISTRACTIONS_LOGIN_PLUGIN_DIR . 'includes/payments/deposit.php'; ?> </div> <!-- end pay deposit --> <?php } } else { echo '<p>No bookings found</p>'; } /* Restore original Post Data */ wp_reset_postdata(); ?> under each booking is a paypal payment button - it uses paypal IPN, so nothing too complex (you will see the required file in the "pay_deposit" div). Here is my paypal payment form: <?php $paypal_url='https://www.sandbox.paypal.com/cgi-bin'; // $paypal_id='malik#thedistractionsband.co.uk'; // Business email ID $booking_form_id = $the_query->post->ID; $total_amount = get_post_meta( $the_query->post->ID, 'wedding_price', true ); $deposit_amount = $total_amount*0.2; ?> <h3>Pay Deposit</h3> <p>Your deposit aount of £<?php echo $deposit_amount; ?> ...</p> <form action="<?php echo $paypal_url; ?>" method="post" name="frmPayPal1"> <input type="hidden" name="business" value="<?php echo $paypal_id; ?>"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="item_name" value="<?php echo get_post_meta( $the_query->post->ID, 'wedding_name', true ); ?> - 20% Deposit"> <input type="hidden" name="item_number" value="DISTR<?php echo $booking_form_id; ?>"> <input type="hidden" name="credits" value="510"> <input type="hidden" name="userid" value="<?php echo $current_user->ID; ?>"> <input type="hidden" name="amount" value="<?php echo $deposit_amount; ?>"> <input type="hidden" name="cpp_header_image" value="http://www.thedistractionsband.co.uk/files/2015/08/LOGO-1.1-1024x304.png"> <input type="hidden" name="no_shipping" value="1"> <input type="hidden" name="currency_code" value="GBP"> <input type="hidden" name="handling" value="0"> <input type="hidden" name="cancel_return" value="<?php echo get_site_url()."/payment-cancel/"; ?>"> <input type="hidden" name="return" value="<?php echo get_site_url()."/my-bookings/"; ?>"> <input name="notify_url" value="<?php echo DISTRACTIONS_LOGIN_PLUGIN_URL ?>includes/payments/paypal-ipn.php" type="hidden"> <input type="submit" border="0" name="submit" value="Pay Now" alt="PayPal - The safer, easier way to pay online!"> <div class="cards"><i class="fa fa-cc-amex"></i> <i class="fa fa-cc-mastercard"></i> <i class="fa fa-cc-visa"></i> <i class="fa fa-credit-card"></i> <i class="fa fa-cc-paypal"></i></div> </form> When a payment is made, it uses the following file to communicated with paypal and update my database - paypal-ipn.php <?php // Make wordpress functions available - so we can write to the db etc $parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] ); require_once( $parse_uri[0] . 'wp-load.php' ); global $wpdb; update_post_meta($booking_id, 'deposit_paid', 1); ?> My issue is in this file. The update_post_meta function is used to add a '1' to the deposit_paid column in my wp_postmeta db table. The issue I have is, how do I define the $booking_id - making sure that it is for the booking that has been paid for. For example, on my page that lists all my bookings, if the first has post_id 10 and I pay for that, how do I make sure that the 'deposit_paid' entry for post_id 10 is updated?
Figured it out, I need to use: $booking_id = $_POST['item_number']; To get the item number sent to paypal (which is the same as the post id)