我正在尝试编辑Wordpress中插件(WooCommerce)添加的现有元框,但我不知道如何执行此操作。
使用以下行添加元框:
add_meta_box( 'woocommerce-product-data', __('Product Data', 'woocommerce'), 'woocommerce_product_data_box', 'product', 'normal', 'high' );
...所以输出HTML到屏幕的功能是woocommerce_product_data_box()
。有没有办法编辑这个功能而不会丢失它?我只想删除部分内容而不编辑原始功能。
我可以用过滤器以某种方式完成此操作吗?还是其他任何想法?
谢谢!
答案 0 :(得分:6)
您可以在writepanel-product_data.php
文件中找到为其编写元框的实际函数。在第24行:
function woocommerce_product_data_box()
列出了产品数据中的所有内容。您可以使用WooCommerce API添加文本框或下拉列表。找到您要添加或删除的地点,然后 -
对于文本字段 -
woocommerce_wp_text_input( array( 'id' => 'YOURCUSTOMID', 'class' => '', 'label' => __('THELABELOFTHEFIELD', 'woocommerce') ) );
下拉 -
woocommerce_wp_select( array( 'id' => 'YOURCUSTOMID', 'label' => __('THELABELOFTHEFIELD', 'woocommerce'), 'options' => array(
'OPTION1' => __('Option 1', 'woocommerce'),
'OPTION2' => __('Option 2', 'woocommerce'),
'OPTION3' => __('Option 3', 'woocommerce'),
'OPTION4' => __('Option 4', 'woocommerce'),
'OPTION5' => __('Option 5', 'woocommerce')
) ) );
因此,您为输入提供了一个ID YOURCUSTOMID ,然后将其标记为您希望管理员在填写字段时看到的内容, THELABELOFTHEFIELD 。
与Wordpress帖子/页面中的自定义元框相同,您仍然需要保存它。在第600行附近找到函数woocommerce_process_product_meta()
。上面的注释将告诉您它正在保存元框数据。然后,插入一行代码以保存刚刚收集的自定义ID -
update_post_meta( $post_id, 'YOURCUSTOMID', stripslashes( $_POST['YOURCUSTOMID'] ) );
并为您自定义ID更改它。只需确保在声明global
之后将该行代码放在任何位置。
当然,要删除字段,您只需注释掉您不希望在这两个函数中收集的字段。
希望有所帮助。