I have a WeMos D1 R1 board and an LCD keypad shield (not the same as yours) and it works ok since the LCD is run off 5v and the LCD has the R/W pin tied to ground so it never drives the data lines at 5v. The LCD will interpret 3v high signals from the esp8266 as a 1 so it all woks.
The WeMos D1 R2 board seems to have some funkiness with respect to pins.
In looking at the two variant files, D1R1 uses variant d1 and D1R2 uses variant d1_mini
Using the d1_mini variant and pinout on an UNO board factor does not seem like a good idea.
While it can work, it can easily create pin numbering confusion.
The D1R2 shifts the Dn pins down by two to skip over the RX and TX pins.
But because of the shift the Dn pin symbols no longer match up to the same physical Arduino pin number.
I.e. D0 on the D1R2 board is not the same physical header pin as Arduino pin 0 on an UNO, where as it is on the D1R1 board.
This makes things confusing when using the D1R2 board when using the Dn symbols provided by the variant file which makes them fairly useless.
However you are re-defining them..
I looked at your Dn defines in the sketch and they seem to be correctly re-aligning the Dn numbers to use the GPIO bits to realign the Dn pins to be the same as the Arduino pin numbers.
I.e D9 will be using the GPIO pin number for the header pin for Arduino pin 9 on an UNO board etc...
Not sure why it isn't working.
Perhaps the mappings used on the PCB are not the actual mappings?
(The PCB is not wired up to the ESP8266 the way the variant file specified, or the silkscreen labels are wrong)
You may have to create a special blink sketch, and use it to check each pin to see if it matches the silkscreen label.
Keep in mind that Dn symbols already exist in the variant file.
Yours are able to work in this case because they are being defined in the sketch after the variant header file has been included, otherwise it would have caused compilation issues.
To help remove the confusion you may want to use the Dn symbols from the variant file, vs re-define your own.
By using the ones from the variant file, the Dn numbers should match the silkscreen labels on the PCB.
i.e. remove the Dn defines from the sketch and then use the Dn symbols for the desired header pins as indicated on the silkscreen for the appropriate pins.
const int rs=D6, en=D7, db4=D2, db5=D3, db6=D4, db7=D5;
LiquidCrystal lcd(rs, en, db4, db5, db6, db7);