我正在使用PHP/HTML表单创建产品。其工作原理如下:
在表单中指定尺寸、数量和属性当我点击“计算”时,发送该信息以动态创建新产品,然后用新产品创建添加到购物车按钮我搞不清楚的是如何更新我想要使用的配送。我希望它有一个特定维度的特定发货插件(即当维度小于24英寸x30时发货FedEx,当产品大于24英寸x30时发货Table Rate发货插件)。
我目前正在使用WooCommerce Force产品发货,以便在我的两个发货插件(FedEx和Table Rate shipping)之间切换。我只需要弄清楚,当盒子的尺寸小于等于24“x 30”时,如何检查“FedEx”,当盒子的尺寸太大时,如何检查“Table Rate Shipping”。
以下是链接my form, 这里有一个链接my product page looks like 在WooCommerce*请注意右上角如何显示“配送方式”:联邦快递和配送。当有人创建产品并将其添加到购物车时,我需要在表单中更新这些内容。
我会使用什么“元密钥”来更新这些信息?以下是迄今为止创建和更新产品的表单的代码:
$post = array(
\'post_author\' => $user_id,
\'post_content\' => \'\',
\'post_status\' => "publish",
\'post_title\' => $Description,
\'post_parent\' => \'\',
\'post_type\' => "product",
);
//Create post
$post_id = wp_insert_post( $post, $wp_error );
if ( $post_id ) {
$attach_id = get_post_meta( $product->parent_id, "_thumbnail_id", true );
add_post_meta( $post_id, \'_thumbnail_id\', $attach_id );
}
wp_set_object_terms( $post_id, \'customer-added\', \'product_cat\' );
wp_set_object_terms( $post_id, \'simple\', \'product_type\' );
update_post_meta( $post_id, \'_visibility\', \'visible\' );
update_post_meta( $post_id, \'_stock_status\', \'instock\' );
update_post_meta( $post_id, \'total_sales\', \'0\' );
update_post_meta( $post_id, \'_downloadable\', \'no\' );
update_post_meta( $post_id, \'_virtual\', \'no\' );
update_post_meta( $post_id, \'_regular_price\', $Price );
update_post_meta( $post_id, \'_sale_price\', $Price );
update_post_meta( $post_id, \'_purchase_note\', "" );
update_post_meta( $post_id, \'_featured\', "no" );
update_post_meta( $post_id, \'_weight\', $Weight );
update_post_meta( $post_id, \'_length\', $Height );
update_post_meta( $post_id, \'_width\', $Width );
update_post_meta( $post_id, \'_height\', $Thick );
update_post_meta( $post_id, \'_sku\', "" );
update_post_meta( $post_id, \'_product_attributes\', array() );
update_post_meta( $post_id, \'_sale_price_dates_from\', "" );
update_post_meta( $post_id, \'_sale_price_dates_to\', "" );
update_post_meta( $post_id, \'_price\', $Price );
update_post_meta( $post_id, \'_sold_individually\', "" );
update_post_meta( $post_id, \'_manage_stock\', "no" );
update_post_meta( $post_id, \'_backorders\', "no" );
update_post_meta( $post_id, \'_stock\', "" );
// file paths will be stored in an array keyed off md5(file path)
$downdloadArray = array(
\'name\' => "Test",
\'file\' => $uploadDIR[\'baseurl\'] . "/video/" . $video
);
$file_path = md5( $uploadDIR[\'baseurl\'] . "/video/" . $video );
$_file_paths[ $file_path ] = $downdloadArray;
// grant permission to any newly added files on any existing orders for this product
//do_action( \'woocommerce_process_product_file_download_paths\', $post_id, 0, $downdloadArray );
update_post_meta( $post_id, \'_downloadable_files \', $_file_paths );
update_post_meta( $post_id, \'_download_limit\', \'\' );
update_post_meta( $post_id, \'_download_expiry\', \'\' );
update_post_meta( $post_id, \'_download_type\', \'\' );
update_post_meta( $post_id, \'_product_image_gallery\', \'\' );
2015年10月12日更新:以下是使用“Update\\u post\\u meta”功能wps\\u ship\\u meta\\u box\\u save($post\\u id,$post)的强制发货插件的代码{
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE)
return $post_id;
if (isset($post->post_type) && $post->post_type == \'revision\')
return $post_id;
if(isset($_POST[\'post_type\']))
if ($_POST[\'post_type\'] == \'product\'){
$productIds = get_option(\'woocommerce_product_apply_wfpship\');
if(is_array($productIds)){
if (!in_array($post_id, $productIds)){
$productIds[] = $post_id;
update_option(\'woocommerce_product_apply_wfpship\', $productIds);
}
}
$wfp_ship = array();
if(isset($_POST[\'ship\']))
if ($_POST[\'ship\']){
foreach ($_POST[\'ship\'] as $ship)
$wfp_ship[] = $ship;
}
if (count($wfp_ship)){
update_post_meta($post_id, \'wfp_ship\', $wfp_ship);
} else {
delete_post_meta($post_id, \'wfp_ship\');
}
}
}
我想做的是在我的PHP/Html表单中有一行代码,上面写着:
update_post_meta( $post_id, \'wfp_ship\', $insert_shipping_method_here? );
我只是不确定更新它的语法是什么。我已经有了一个可以选择发货方式的插件,我只是不知道在创建新产品时如何编写代码来设置它。
自定义计算器(我的表单)的链接下面现在有完整的强制发货插件代码,供这里的人查看。
将来我该如何解决这个问题?我听说Firebug是一种调试,但是我如何使用这些东西来找出要更新的语法呢?
2015年10月12日下午4:07更新:当我读到更多关于meta Box的信息时,这是强制发货插件为我的产品创建的。。。我现在只需要知道如何通过我的实验页面上的自定义计算器表单使用PHP代码选中复选框,以便在创建产品时强制使用“fedex”或“shipping”。