Word Rendering Modes
Word rendering controls how a blocked word looks after masking. Two settings work together: Word Rendering (how many letters stay visible) and Filter Character (which symbol replaces masked letters). Both are on the General Settings tab.
Word Rendering options
Section titled “Word Rendering options”The wbbprof_settings[word_render] option accepts four values.
First letter retained (first)
Section titled “First letter retained (first)”The first character of the blocked word stays visible; all remaining characters are replaced.
Example with blog masked using *: b***
Use this when you want readers to have a hint at the word’s starting letter, which is often enough context without displaying the full word.
Last letter retained (last)
Section titled “Last letter retained (last)”All characters except the final one are replaced.
Example: ***g
Less common — useful if the tail of the word is more recognizable than the start.
First and last letter retained (first_last)
Section titled “First and last letter retained (first_last)”The first and last characters stay visible; middle characters are replaced.
Example: b**g
This is the default at installation and a reasonable balance — the word is recognizable to those who know it but not spelled out in full.
All letters removed (all)
Section titled “All letters removed (all)”Every character in the blocked word is replaced.
Example: ****
The strongest visual mask. The reader sees only symbols and the word length.
Filter Character options
Section titled “Filter Character options”The wbbprof_settings[character] option determines which symbol is used in place of masked letters. It applies to both word masking and privacy masking.
| Slug | Character | Notes |
|---|---|---|
asterisk |
* |
Default at installation |
dollar |
$ |
|
question |
? |
|
exclamation |
! |
|
hyphen |
- |
|
hash |
# |
|
tilde |
~ |
|
blank |
space | Makes masked words disappear into whitespace |
How masking is applied
Section titled “How masking is applied”For case-insensitive matching (incase), the plugin uses a regex callback that calls the censoring function on each match. This means the actual matched characters (which may differ in case from the keyword) are used to determine the replacement length, so the output length always matches the input length.
For case-sensitive matching (case), a direct preg_replace is used. The replacement string is computed from the keyword as stored in your list, not from the matched text.
In both modes, the masking is applied letter-by-letter using multibyte string functions, so Unicode characters (accented letters, etc.) in keywords are handled correctly.
Adding a custom replacement character
Section titled “Adding a custom replacement character”Developers can add their own character option to the dropdown using the wbbprof_word_rendering_symbols filter, and supply the actual character at masking time using wbbprof_custom_character.

