I would suggest calling this a Rich Text Editor instead of a WYSIWYG. More than likely it won't be a true WYSIWYG.
Here is a
BBCode parser I wrote using javascript. It uses the same tags that phpBB has for custom bbcodes ({TEXT}, {SIMPLETEXT}, etc). It can convert bbcode to html and html to bbcode. Something like this should allow custom bbcodes to be added and wouldn't change massive amounts of code if the built in bbcodes are switched to "custom" ones.
Here is an
example ckeditor plugin that uses the above parser.
One question I have is about custom bbcodes or even the quote bbcode. The quote bbcode contains something like "x said:". You don't want people to be able to change "said:". You only want them to be able to change "x". Same could go for spoiler bbcodes that have something like "Spoiler:" in them.
If you set contenteditable="false" on elements then CKEditor won't allow those to be edited (seems like it may not work in some browsers but I can't find the documentation about this at the moment). So that would be the solution but do you attempt to add that attribute automatically or do you require people to add another HTML template that is used for the editor?