Попробуйте этот запрос,
SELECT courses.*, b.STR_CRSE_IDS FROM courses INNER JOIN (SELECT DISTINCT course_id as STR_CRSE_IDS FROM university_schools WHERE univ_id = '2289') AS b ON courses.course_id = b.STR_CRSE_IDS
add_shortcode('wpse_233031_shortcode', function(){
global $wpdb;
//start table tag
$outputHTML = '<table>';
$myrows = $wpdb->get_results("SELECT * FROM PNaphtha", ARRAY_A);
//add table row and table header
$outputHTML += "<tr><th>SrNo</th><th>Compound</th><th>Tc (K)</th><th>Pc (bar)</th>
</tr>";
ob_start();
foreach ( $myrows as $row) {
//add each row inside the forloop
$outputHTML += "<tr><td>".$row['SrNo']."</td><td>".$row['Compound']."</td><td>".
$row['Tc (K)']."</td><td>".$row['Pc (bar)']."</td></tr>";
}
$outputHTML += = '</table>'
//end the table after the loop has done
return ob_get_clean();
});
Что-то вроде этого?
Не знаю, как вы выводите данные, но вы можете просто повторить построенную строку в конце, я давно не работал с WordPress.
Вы закрываете таблицу внутри цикла foreach. Вы должны закрыть таблицу после завершения цикла foreach (и все строки будут напечатаны):
foreach ( $myrows as $row) {
echo "<tr><td>".$row['SrNo']."</td><td>".$row['Compound']."</td><td>".
$row['Tc (K)']."</td><td>".$row['Pc (bar)']."</td></tr>";
}
echo "</table>";