I am using the FooEvents plugin to capture event attendee information on WooCommerce event products. When an order is placed, that plugin is saving the attendee information to the WooCommerce order meta as a custom field Array.
Using the Post Meta Inspector plugin, I am able to see that the attendee information is being saved as a meta key of WooCommerceEventsOrderTickets
and with a value of:
'a:1:{i:1;a:1:{i:1;a:18:{s:26:"WooCommerceEventsProductID";i:454;s:24:"WooCommerceEventsOrderID";i:4609;s:27:"WooCommerceEventsTicketType";s:0:"";s:23:"WooCommerceEventsStatus";s:6:"Unpaid";s:27:"WooCommerceEventsCustomerID";s:2:"64";s:29:"WooCommerceEventsAttendeeName";s:13:"AttendeeFirst";s:33:"WooCommerceEventsAttendeeLastName";s:12:"AttendeeLast";s:30:"WooCommerceEventsAttendeeEmail";s:19:"[email protected]";s:34:"WooCommerceEventsAttendeeTelephone";s:12:"607-123-4567";s:32:"WooCommerceEventsAttendeeCompany";s:0:"";s:36:"WooCommerceEventsAttendeeDesignation";s:0:"";s:27:"WooCommerceEventsVariations";a:1:{s:33:"attribute_pa_registration-options";s:14:"nassgap-member";}s:28:"WooCommerceEventsVariationID";i:4078;s:22:"WooCommerceEventsPrice";s:118:"<span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">$</span>675.00</span>";s:35:"WooCommerceEventsPurchaserFirstName";s:3:"Jon";s:34:"WooCommerceEventsPurchaserLastName";s:6:"Fuller";s:31:"WooCommerceEventsPurchaserEmail";s:19:"[email protected]";s:37:"WooCommerceEventsCustomAttendeeFields";a:6:{s:24:"fooevents_custom_address";s:15:"123 Attendee St";s:21:"fooevents_custom_city";s:13:"Attendee City";s:31:"fooevents_custom_state/province";s:6:"Nevada";s:28:"fooevents_custom_postal_code";s:5:"13813";s:29:"fooevents_custom_organization";s:12:"Attendee LLC";s:22:"fooevents_custom_title";s:14:"Attendee Title";}}}}'
I am looking to grab the values within the array, to use that information — to be able to display certain field values within:
- WooCommerce order emails
- in the backend Orders table screen (as a new column)
- within the "Order details" when viewing/editing the order, so that the data is more easily visible (e.g., below the Billing or Shipping details)
I would like to be able to grab certain meta values from the array, such as WooCommerceEventsAttendeeName
, WooCommerceEventsAttendeeLastName
, fooevents_custom_state/province
, fooevents_custom_address
, fooevents_custom_title
, etc.
This PHP snippet will add a field to the Order Emails, but how to I edit this to that I can get it to display some of the meta from within that array?
/**
* Add a custom field (in an order) to the emails
*/
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
$fields['meta_key'] = array(
'label' => __( 'Label' ),
'value' => get_post_meta( $order->id, 'meta_key', true ),
);
return $fields;
}
Update:
I have echoed a the meta value of that key, for a particular WooCommerce order by using
echo '<pre>'; print_r( get_post_meta( '4609', 'WooCommerceEventsOrderTickets', true ) ); echo '</pre>';
This is what shows:
Array
(
[1] => Array
(
[1] => Array
(
[WooCommerceEventsProductID] => 454
[WooCommerceEventsOrderID] => 4609
[WooCommerceEventsTicketType] =>
[WooCommerceEventsStatus] => Unpaid
[WooCommerceEventsCustomerID] => 64
[WooCommerceEventsAttendeeName] => AttendeeFirst
[WooCommerceEventsAttendeeLastName] => AttendeeLast
[WooCommerceEventsAttendeeEmail] => [email protected]
[WooCommerceEventsAttendeeTelephone] => 607-123-4567
[WooCommerceEventsAttendeeCompany] =>
[WooCommerceEventsAttendeeDesignation] =>
[WooCommerceEventsVariations] => Array
(
[attribute_pa_registration-options] => nassgap-member
)
[WooCommerceEventsVariationID] => 4078
[WooCommerceEventsPrice] => $675.00
[WooCommerceEventsPurchaserFirstName] => Jon
[WooCommerceEventsPurchaserLastName] => Fuller
[WooCommerceEventsPurchaserEmail] => [email protected]
[WooCommerceEventsCustomAttendeeFields] => Array
(
[fooevents_custom_address] => 123 Attendee St
[fooevents_custom_city] => Attendee City
[fooevents_custom_state/province] => Nevada
[fooevents_custom_postal_code] => 13813
[fooevents_custom_organization] => Attendee LLC
[fooevents_custom_title] => Attendee Title
)
)
)
)
wp_postmeta
table, there is also the actual array as previously pasted here. Themeta_key
isWooCommerceEventsOrderTickets
and themeta_value
changes for each post (Order). One example is pasted in the question above. Here is a screenshot: freshysites.d.pr/YWSB5R Those post IDs are the WooCommerce orders. – Garconisprint_
didn't work, butprint_r
did, if that's what you meant. I've updated the question above with the output of the array. – Garconisprint_r
instead ofprint_
… So this will be much more useful now. thanks – LoicTheAztec