Since IsHidden is stored as a small integer, the simplest way to handle three states of visibility instead of just two is to give it a value of 2 for works-in-progress. This would keep these pages out of search results without any need to modify queryinc.php, because it is already using 0 for public pages and 1 for non-public pages that members may see. A value of 2 would mean it is even more private than a value of 1. I would mainly have to modify forms to allow it multiple values instead of just two, and when displaying hidden pages, I would have to make a distinction between IsHidden values of 1 and 2.
Since IsHidden is stored as a small integer, the simplest way to handle three states of visibility instead of just two is to give it a value of 2 for works-in-progress. This would keep these pages out of search results without any need to modify queryinc.php, because it is already using 0 for public pages and 1 for non-public pages that members may see. A value of 2 would mean it is even more private than a value of 1. I would mainly have to modify forms to allow it multiple values instead of just two, and when displaying hidden pages, I would have to make a distinction between IsHidden values of 1 and 2.