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 <code>comment_post_ID</code> = $order_id
AND <code>comment_type</code> 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.
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>';
}