Luk*_*Luk 4 php wordpress product dimensions woocommerce
我有一个具有以下尺寸参数的产品:
在产品编辑页面中,我只有长度、宽度、高度(Woocomerce 标准)
我想添加其他尺寸参数
如何正确添加这些额外尺寸?
有没有这样的过滤器?
有多种方式\xe2\x80\xa6
\n\n1)使用产品属性:(无需任何编码):
\n\n\n\n优点:其他维度属性将显示在产品页面上。
\n\n缺点:
\n\nWC_Product方法来获取这些自定义产品属性(如默认维度属性)。因此,将它们移出产品页面将会更加复杂。2)使用自定义设置字段:
\n\n// Add custom fields to product shipping tab\nadd_action( \'woocommerce_product_options_dimensions\', \'add_product_options_other_dimensions\');\nfunction add_product_options_other_dimensions(){\n global $product_object;\n\n $product_id = method_exists( $product_object, \'get_id\' ) ? $product_object->get_id() : $product_object->id;\n\n echo \'</div><div class="options_group">\'; // New option group\n\n woocommerce_wp_text_input( array(\n \'id\' => \'_diameter\',\n \'label\' => __( \'Diameter\', \'woocommerce\' ),\n \'desc_tip\' => \'true\',\n \'description\' => __( \'Diameter description help.\', \'woocommerce\' )\n ) );\n\n woocommerce_wp_text_input( array(\n \'id\' => \'_thickness\',\n \'label\' => __( \'Thickness\', \'woocommerce\' ),\n \'desc_tip\' => \'true\',\n \'description\' => __( \'Thickness description help.\', \'woocommerce\' )\n ) );\n\n woocommerce_wp_text_input( array(\n \'id\' => \'_circuit\',\n \'label\' => __( \'Circuit\', \'woocommerce\' ),\n \'desc_tip\' => \'true\',\n \'description\' => __( \'Circuit description help.\', \'woocommerce\' )\n ) );\n\n}\n\n// Save the custom fields values as meta data\nadd_action( \'woocommerce_process_product_meta\', \'save_product_options_other_dimensions\' );\nfunction save_product_options_other_dimensions( $post_id ){\n\n if( isset( $_POST[\'_diameter\'] ) )\n update_post_meta( $post_id, \'_diameter\', esc_attr( $_POST[\'_diameter\'] ) );\n\n if( isset( $_POST[\'_thickness\'] ) )\n update_post_meta( $post_id, \'_thickness\', esc_attr( $_POST[\'_thickness\'] ) );\n\n if( isset( $_POST[\'_circuit\'] ) )\n update_post_meta( $post_id, \'_circuit\', esc_attr( $_POST[\'_circuit\'] ) );\n\n}\n\n// Add custom fields to product variation settings\nadd_action( \'woocommerce_product_after_variable_attributes\',\'add_variation_options_other_dimensions\', 10, 3 );\nfunction add_variation_options_other_dimensions( $loop, $variation_data, $variation ){\n\n $variation_diameter = get_post_meta($variation->ID,"_diameter", true );\n if( ! $variation_diameter ) $variation_diameter = "";\n\n $variation_thickness = get_post_meta($variation->ID,"_thickness", true );\n if( ! $variation_thickness ) $variation_thickness = "";\n\n $variation_circuit = get_post_meta($variation->ID,"_circuit", true );\n if( ! $variation_circuit ) $variation_circuit = "";\n\n echo \'<p class="form-field dimensions_field">\';\n\n woocommerce_wp_text_input( array(\n \'id\' => \'_diameter\' . \'_\' . $loop,\n \'label\' => __( \'Diameter\', \'woocommerce\' ),\n \'desc_tip\' => \'true\',\n \'description\' => __( \'Diameter description help.\', \'woocommerce\' ),\n \'value\' => $variation_diameter\n ) );\n\n woocommerce_wp_text_input( array(\n \'id\' => \'_thickness\' . \'_\' . $loop,\n \'label\' => __( \'Thickness\', \'woocommerce\' ),\n \'desc_tip\' => \'true\',\n \'description\' => __( \'Thickness description help.\', \'woocommerce\' ),\n \'value\' => $variation_thickness\n ) );\n\n woocommerce_wp_text_input( array(\n \'id\' => \'_circuit\' . \'_\' . $loop,\n \'label\' => __( \'Circuit\', \'woocommerce\' ),\n \'desc_tip\' => \'true\',\n \'description\' => __( \'Circuit description help.\', \'woocommerce\' ),\n \'value\' => $variation_circuit\n ) );\n\n echo \'</p>\';\n}\n\n\n// Save product variation custom fields values\nadd_action( \'woocommerce_save_product_variation\',\'save_variation_options_other_dimensions\', 10 ,2 );\nfunction save_variation_options_other_dimensions( $variation_id, $loop ){\n\n $built_lenght = $_POST["_diameter_$loop"];\n if( isset($built_lenght) )\n update_post_meta( $variation_id, \'_built_lenght\', esc_attr($built_lenght) );\n\n $built_width = $_POST["_thickness_$loop"];\n if( isset($built_width) )\n update_post_meta( $variation_id, \'_built_width\', esc_attr($built_width) );\n\n $built_height = $_POST["_circuit_$loop"];\n if( isset($built_height) )\n update_post_meta( $variation_id, \'_built_height\', esc_attr($built_height) );\n}\nRun Code Online (Sandbox Code Playgroud)\n\n此代码位于活动子主题(或主题)的 function.php 文件中。
\n\n您将获得以下产品:
\n\n\n\n对于产品变体(在可变产品“变体设置”中):
\n\n\n\n现在要显示并获取这些值,您必须按照本文档中的说明通过主题覆盖 woocommerce 模板。
\n\n通过主题复制和覆盖的文件是:single-product/product-attributes.phptemplate.txt。
您必须向其中添加一些代码,以便在显示的默认尺寸之后显示自定义的附加尺寸标签和值。
\n\n要输出正确的值,您将使用get_post_meta()函数。
例如,要显示diameter您将使用的值:
<?php echo get_post_meta( $product->get_id(), \'_diameter\', true ); ?>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
8125 次 |
| 最近记录: |