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に合わせて変更するだけです。globalsが宣言された後は、必ずそのコード行をどこかに配置してください。

当然、フィールドを削除するために、これらの両方の機能で収集したくないフィールドをコメントアウトすることができます。

お役に立てば幸いです。

于 2012-11-24T01:26:06.950 に答える