チェックアウトページには、注文メタデータに保存されるカスタムフィールドがあります。注文メタデータを取得してカスタム投稿タイプを作成し、カスタムフィールドに注文メタデータを入力する必要があります。
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order){
global $mypass;
echo '<p><strong>'.__('My Field').':</strong> ' . get_post_meta( $order->id, 'My Field', true ) . '</p>';
$mypass = get_post_meta( $order->id, 'My Field', true );
}
次の関数はチェックアウト時に投稿を作成しますが、上記の関数で設定されたメタフィールドを引き込みません。
add_action( 'woocommerce_checkout_update_order_meta', 'create_custom_post' );
function create_custom_post($order, $order_id, $posts) {
global $posts;
$my_post = array(
'post_title' => 'Page Title',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_type' => 'sale',
);
$website_url = get_post_meta($order_id->id, 'My Field', true);
$new_post_id = wp_insert_post( $my_post );
update_post_meta($new_post_id, 'My Field', $website_url );
}
メタオーダーデータを保存する関数にグローバル変数を設定することも試みました
function recent_post_page($order_status, $order_id, $post, $checkout ) {
global $mypass;
$order = new WC_Order( $order_id );
$my_post = array(
'post_title' => 'Page title',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_type' => 'sale',
);
$new_post_id = wp_insert_post( $my_post );
update_post_meta($new_post_id, 'My Field', $mypass );
}
add_action( 'woocommerce_payment_complete_order_status', 'recent_post_page', 10, 2 );
任意のフィードバックをいただければ幸いです。
私はwp_insert_post関数をorderメタデータを保存するのと同じ関数に入れることでそれを理解することができました
$website_url = get_post_meta($order_id->id, 'My Field', true);
をチェックしてくださいあなたは$order_id
のid
を手に入れようとしています。
$order_id
は文字列であるか、文字列であるべきです。どちらかを実行する必要があります。
get_post_meta($order_id, 'My Field', true);
または
get_post_meta($order->ID, 'My Field', true);