Запросы в цикле выполнять ни в коем случае не нужно, можно генерировать запрос как-то вот так:
$keywords = [
'key1',
'key2'
];
$whereStatement = "";
array_walk($keywords, function($keyword) use (&$whereStatement){
$whereStatement .= " OR (post.post_title LIKE '%". $keyword ."%' OR post.post_excerpt LIKE '%". $keyword ."%')";
});
$whereStatement = trim($whereStatement, ' OR ');
$sql = "
SELECT
ID
FROM
" . $this->posts . " AS post
WHERE
post.post_type='attachment'
AND (
" . $whereStatement . "
)
";
echo "<pre>", print_r($sql, true), "</pre>";