我试图根据我的客户的需求调整Wordpress Jigoshop,我有点卡住了。我需要的是:当选择产品变体时,一些其他选项以客户必须选择的单选按钮的形式出现。我设法让所有的东西都能正常工作,但我现在需要的是当点击提交按钮时,将选定的单选按钮发送到购物车,结账等。试图发送一个隐藏的输入值到下一页
我试图用自己的产品定制功能来做到这一点,它们的功能是:
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;
}
}
我试图改变它们的功能,以满足我的需求,这是我想出(其中get_cod是id和隐藏输入的名称和“Adauga在COS”是我的提交按钮的值):
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] : '';
}}
但是价值不被发送到下一个页面。任何人都可以帮忙吗?干杯!
下面是一个包含多个代码的更新:
<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>
这是车的接收值的部分:
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;
?>
首先,你是否尝试用'type =“text”'替换'type =“hidden”'来查看'<?php echo esc_attr($ _produ ct-> ID); ?>'? – maxdec 2012-08-07 10:18:01
嗨,谢谢你的回复!它打印得很好(我用萤火虫检查过)。 – 2012-08-07 11:19:13