and display the contents of the correct url...
It would be a lot more worrying if the extraneous parameters
did affect page content!
One thing you can do is go into the "parameters" area of webmaster tools in any search engine that has the option. See if the unwanted parameters are listed; if they are, check the box for "doesn't affect page content".
So what you want is something like
RewriteCond %{QUERY_STRING} ^(([^&]+&)*)wpmp_
RewriteRule (blahblah) http://www.example.com/$1?%1 [R=301]
except that it may be easier on your server to go two steps forward and one step back, as in
RewriteCond %{QUERY_STRING} wpmp_
RewriteCond %{QUERY_STRING} ^(([^&]+&)*)wpmp_
What this says is "don't waste your time capturing and fine-tooth-combing unless we've already established that the target element actually does occur in the query". The second condition will, of course, always succeed; its sole purpose is to create a capture. You've said that the offending parameter always comes last, and that's a help. If it turns out you're mistaken, the Condition becomes a tiny bit more complicated and you end up with %1%2. But let's not borrow trouble.
Now, about that blahblah. What do your page URLs look like? php, extensionless, slash? The issue is that any given page request will contain
one page file and then any number of non-page files. Since the rule involves looking at conditions, you want to set it up so the server can bypass this step when it already knows that the condition will fail. So something like
RewriteRule ^([^.]+(\.php|/))?$ et cetera
but the details will depend on your site. Here too it may be faster in the long run to go two steps forward and one steps back, as in
RewriteCond %{QUERY_STRING} wpmp_
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(([^&\ ]+&)*)wpmp_
RewriteRule (/|\.php|^)$ http://www.example.com/%1 [R=301,L]
doing all the capturing in one fell swoop. That version looks goofy but I'm pretty sure it's correct.
At least more correct than it would have been at 2:30 AM when I first saw the question.