That actually sounds easier than trying to figure out how to do it the less cumbersome way. You can always change how it finds out the info when you figure out a way to do it, if any.
And yes, with Burning Crusade I can see the problem and it further enforces the decision to use the color value of the text.
Although, I just noticed something on RecipeInfo function returns. Maybe the recipe is disabled if it is unlearnable by the player. Also, categoryID, if you haven't checked already, may be the expansion it is for. The learned value to see if it is already learned, obviously. Just a thought.
Code:
categoryID Number ID of the category the recipe belongs to.
craftable Boolean Indicates if the recipe can be crafted.
difficulty String "trivial", "easy", "optimal", or "medium"
disabled Boolean Indicates if the recipe is disabled.
favorite Boolean Indicates if the recipe is marked as a favorite.
hiddenUnlessLearned Boolean Indicates if the recipe should be hidden if it has yet to be learned.
icon Number ID of the recipe's icon.
learned Boolean Indicates if the character has learned the recipe.
name String Name of the recipe.
nextRecipeID Number ID of next recipe in the list.
numAvailable Number The number that can be created with the available reagents.
numIndents Number Number of indents when displaying under categories.
numSkillUps Number The number of skillups from creating the recipe.
previousRecipeID Number ID of the previous recipe in the list.
recipeID Number ID of the recipe.
sourceType Number Source of the recipe.
type String Type of recipe
alternateVerb String Alternate verb used for the recipe (such as enchants, or engineering tinkers)