Order notes (private note) are only available for backend when using get_comments()
function.
If you look at WC_Comments exclude_order_comments()
method you will see that front end queries are filtered regarding private order notes…
So the turn around is to build a custom function to get the private Order notes:
function get_private_order_notes( $order_id){
global $wpdb;
$table_perfixed = $wpdb->prefix . 'comments';
$results = $wpdb->get_results("
SELECT *
FROM $table_perfixed
WHERE `comment_post_ID` = $order_id
AND `comment_type` LIKE 'order_note'
");
foreach($results as $note){
$order_note[] = array(
'note_id' => $note->comment_ID,
'note_date' => $note->comment_date,
'note_author' => $note->comment_author,
'note_content' => $note->comment_content,
);
}
return $order_note;
}
Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
This code is tested and works.
Usage (for example the $order_id = 6238
):
$order_id = 6238;
$order_notes = get_private_order_notes( $order_id );
foreach($order_notes as $note){
$note_id = $note['note_id'];
$note_date = $note['note_date'];
$note_author = $note['note_author'];
$note_content = $note['note_content'];
// Outputting each note content for the order
echo '<p>'.$note_content.'</p>';
}
$order->add_order_note($info_for_order, 1);
– Schmaltz