Переписывание URL-адресов изображений с динамического на оригинальное

Вот сделка. Мой плагин автоматически помещает изображения из галереи WP на лету, используя библиотеку GD, где бы они ни появлялись. Итак, у меня есть физическая копия (в wp-uploads) этих вложений, а также водяная метка, динамическая копия изображения, которую я заменяю источник изображения на странице с помощью Simple HTML DOM .

Итак, теперь у меня есть изображение на моей странице, которое указывает на такой URL:

http://localhost/wp-content/plugins/pluginname/image.php?original=http%3A%2F%2Flocalhost%2Fwp-content%2Fuploads%2F2012%2F09%2FPenguins-300x225.jpg&username=&wmtext=localhost&wmsize=14&wmcolor=%23000000&wmpos=top-center&pin_hoveron=1&pin_hoverimg=http%3A%2F%2Flocalhost%2Fwp-content%2Fplugins%2Fpluginname%2Fadd-to-etc.png&followimg=&pin_on=1&follow_on=1

То, что я хочу сделать, – сделать источник изображения APPEAR таким, как оригинальная версия, но вместо этого отобразить динамическое изображение. Я попытался объединиться с правилами перезаписи, но он никогда ничего не делает, независимо от того, что я пытаюсь. Правила добавляются в .htaccess, но ничего не меняется. Вот что я возился с:

 add_action('generate_rewrite_rules', array( $this, 'addRewrites' ) ); public function addRewrites( $content ) { global $wp_rewrite; $new_rules = array( 'img/(.*)' => plugins_url( 'image.php', __FILE__ ) . '?etc=$1', ); $wp_rewrite->non_wp_rules += $new_rules; } и add_action('generate_rewrite_rules', array( $this, 'addRewrites' ) ); public function addRewrites( $content ) { global $wp_rewrite; $new_rules = array( 'img/(.*)' => plugins_url( 'image.php', __FILE__ ) . '?etc=$1', ); $wp_rewrite->non_wp_rules += $new_rules; } 

Теперь, если я посещаю URL-адрес изображения или страницу с изображением, ничего не происходит. = / Я новичок, когда дело доходит до переписывания правил, так что это немного выше меня.

Я не уверен в полном объеме ваших требований, но, вероятно, я бы сказал:

  1. Зарегистрируйте специальные размеры (и) изображений, которые будут использоваться вместо оригинала.
  2. Свяжите водяные знаки с такими размерами.

Таким образом, нет необходимости в динамической обработке изображений. Что касается вашей озабоченности по поводу старых изображений, не имеющих водяных знаков, вы сможете (re) генерировать размеры для них, используя один из плагинов, плавающих вокруг (это довольно обычная операция).

Я закончил тем, что изменил свой код, и это то, что мне нужно:

Крючок:

 add_action( 'generate_rewrite_rules', array( $this, 'addRewrites' ) ); 

Создайте правила:

 public function addRewrites( $content ) { global $wp_rewrite; $plugin_path = substr( str_replace( home_url(), '', plugins_url( '', __FILE__ ) ), 1 ); $upload_path = substr( str_replace( home_url(), '', wp_upload_dir()['baseurl'] ), 1 ); $new_rules = array( $upload_path . '/*(.+\.jpg)$' => $plugin_path . '/image.php?original=$1', $upload_path . '/*(.+\.gif)$' => $plugin_path . '/image.php?original=$1', $upload_path . '/*(.+\.png)$' => $plugin_path . '/image.php?original=$1', ); $wp_rewrite->non_wp_rules += $new_rules; } 

И это только изображения из папки uploads, так что это довольно безопасно, я считаю.