2

我正在尝试编辑由 Wordpress 中的插件(WooCommerce)添加的现有元框,但我不知道该怎么做。

使用这一行添加元框:

add_meta_box( 'woocommerce-product-data', __('Product Data', 'woocommerce'), 'woocommerce_product_data_box', 'product', 'normal', 'high' );

...所以将 HTML 输出到屏幕的函数是woocommerce_product_data_box(). 有什么方法可以在不丢失所有内容的情况下编辑此功能?我只想删除它的一部分而不编辑原始功能。

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

谢谢!

4

1 回答 1

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 帖子/页面中的自定义元框相同,但您仍然必须保存它。woocommerce_process_product_meta()在第 600 行附近找到该函数。上面的注释将告诉您它正在保存元框数据。然后,插入一行代码来保存您刚刚收集的任何自定义 ID -

 update_post_meta( $post_id, 'YOURCUSTOMID', stripslashes( $_POST['YOURCUSTOMID'] ) );

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

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

希望有帮助。

于 2012-11-24T01:26:06.950 回答