在Wordpress中编辑现有的WooCommerce元框

jam*_*lin 2 php wordpress wordpress-plugin woocommerce

我正在尝试编辑由WordPress中的插件(WooCommerce)添加的现有元框,但我不知道如何执行此操作.

元行添加了以下行:

add_meta_box( 'woocommerce-product-data', __('Product Data', 'woocommerce'), 'woocommerce_product_data_box', 'product', 'normal', 'high' );
Run Code Online (Sandbox Code Playgroud)

...所以将HTML输出到屏幕的功能是woocommerce_product_data_box().有没有办法编辑这个功能而不会丢失它?我只想删除它的一部分而不编辑原始功能.

我能以某种方式用过滤器完成这个吗?还是其他任何想法?

谢谢!

RCN*_*eil 6

您可以在writepanel-product_data.php文件中找到为其编写元框的实际函数.在第24行:

function woocommerce_product_data_box()
Run Code Online (Sandbox Code Playgroud)

这列出了产品数据中的所有内容.您可以使用WooCommerce API添加文本框或下拉列表.找到您要添加或删除的地点,然后 -

对于文本字段 -

woocommerce_wp_text_input( array( 'id' => 'YOURCUSTOMID', 'class' => '', 'label' => __('THELABELOFTHEFIELD', 'woocommerce') ) );
Run Code Online (Sandbox Code Playgroud)

下拉菜单 -

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')
            ) ) );
Run Code Online (Sandbox Code Playgroud)

因此,您为输入提供ID,YOURCUSTOMID,然后将其标记为管理员在填写字段THELABELOFTHEFIELD时要查看的内容.

与Wordpress帖子/页面中的自定义元框相同,您仍然需要保存它.woocommerce_process_product_meta()在第600行附近找到函数.上面的注释将告诉您它正在保存元框数据.然后,插入一行代码以保存您刚刚收集的任何自定义ID -

 update_post_meta( $post_id, 'YOURCUSTOMID', stripslashes( $_POST['YOURCUSTOMID'] ) );
Run Code Online (Sandbox Code Playgroud)

并为您自定义ID更改它.只需确保global在声明s 之后将该行代码放在任何位置.

当然,对于删除字段,您只需注释掉您不希望在这两个函数中收集的字段.

希望有所帮助.