web-dev-qa-db-ja.com

Woocommerce管理者注文編集ページにプログラムでカスタム注文メモを追加する

Woocommerceでは、phpを使用して管理注文の編集ページにカスタム注文メモを追加しようとしています(そのため、プログラムで)。私はまだ道を見つけていません。

任意の助けをいただければ幸いです。

WooCommerce order note in the order admin page

6
Max

動的な注文IDから_WC_Order_ add_order_note() メソッドをこのように使用できます:

_// If you don't have the WC_Order object (from a dynamic $order_id)
$order = wc_get_order(  $order_id );

// The text for the note
$note = __("This is my note's text…");

// Add the note
$order->add_order_note( $note );
_

テスト済みで動作します。

21
LoicTheAztec

新しい注文にメモを追加する方法を見つけようとしていた皆さん、ありがとう。 @LoicTheAztecが投稿したソリューションを使用して適切なフックを探していました。これは私のために働いたソリューションであり、他の誰かに役立つことを願っています。

これをFunctions.phpファイルに追加します

add_action( 'woocommerce_new_order', 'add_engraving_notes',  1, 1  );

function add_engraving_notes( $order_id ) {
 //note this line is different 
 //because I already have the ID from the hook I am using.
 $order = new WC_Order( $order_id ); 

 // The text for the note
 $note = __("Custom Order Note Here");

 // Add the note
 $order->add_order_note( $note );

 // Save the data
 $order->save();
}
2
DevTurtle

このコードは、functions.phpにコードを追加するのに役立ちます。

                    add_action('woocommerce_after_order_notes', 'customise_checkout_field');

                    function customise_checkout_field($checkout)
                    {
                    echo '<div id="customise_checkout_field"><h2>' . __('Heading') . '</h2>';
                    woocommerce_form_field('customised_field_name', array(
                    'type' => 'text',
                    'class' => array(
                    'my-field-class form-row-wide'
                    ) ,
                    'label' => __('Customise Additional Field') ,
                    'placeholder' => __('Guidence') ,
                    'required' => true,
                    ) , $checkout->get_value('customised_field_name'));
                    echo '</div>';
                    }

カスタムフィールドのデータ検証には、以下のコードを使用します。

                    add_action('woocommerce_checkout_process', 'customise_checkout_field_process');

                    function customise_checkout_field_process()
                    {
                        // if the field is set, if not then show an error message.
                        if (!$_POST['customised_field_name']) wc_add_notice(__('Please enter value.') , 'error');
                    }

フィールドの値を更新

                    add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');

                    function customise_checkout_field_update_order_meta($order_id)
                    {
                        if (!empty($_POST['customised_field_name'])) {
                            update_post_meta($order_id, 'Some Field', sanitize_text_field($_POST['customised_field_name']));
                        }
                    }
0
Zaheer Abbas