title: Prevent WordPress from escaping shortcode attributes
body: <p>at the moment I'm developing a plugin, which hooks up to the content editor. My callback receives the post content after editing and calls do_shortcode(), but there is a problem and i don't know how to fix it.</p>
  
  <pre><code>add_filter('wp_insert_post_data',   'prepareContentSaving', 99, 2);
  add_filter('wp_update_post_data',   'prepareContentSaving', 99, 2);
  </code></pre>
  
  <p>For instance if my post looks like (which obviously looks like valid shortcode syntax):</p>
  
  <pre><code>[foo bar="two words"]
  </code></pre>
  
  <p>my callback receives:</p>
  
  <pre><code>[foo bar=\"two words\"]
  </code></pre>
  
  <p>Looks right, right? But now whenever the shortcode is parsed via do_shortcode() the arguments are parsed like</p>
  
  <pre><code>[tag argument1=value1 argument2]
  </code></pre>
  
  <p>instead of</p>
  
  <pre><code>[tag argument="Foo bar"]
  </code></pre>
  
  <p>which then looks something like this in PHP:</p>
  
  <pre><code>array(
  [0]=&gt;   string "bar=\"two"
  [1]=&gt;   string "words\""
  )
  </code></pre>
  
  <p>So how can I prevent the quotes inside the shortcode from being escaped? Is there something wrong with the post data hook? Changing the priority from 99 to 0 doesn't change something either. Am I using the right filter?</p>